diff --git a/my_modules/c1pjs-client/lib/cpu.js b/my_modules/c1pjs-client/lib/cpu.js
index 36cc5772f..49a32f502 100644
--- a/my_modules/c1pjs-client/lib/cpu.js
+++ b/my_modules/c1pjs-client/lib/cpu.js
@@ -57,8 +57,8 @@ function C1PCPU(parmsCPU)
Component.call(this, "C1PCPU", parmsCPU);
this.clearRegs();
- this.fPower = false;
- this.fRunning = false;
+ this.aFlags.fPowered = false;
+ this.aFlags.fRunning = false;
this.fAutoStart = parmsCPU["autoStart"];
/*
@@ -482,7 +482,7 @@ Component.subclass(Component, C1PCPU);
*/
C1PCPU.prototype.reset = function(fPowerOn)
{
- if (this.fRunning)
+ if (this.aFlags.fRunning)
this.halt();
this.clearRegs();
this.regPC = this.getWord(this.VECTOR_RESET);
@@ -516,7 +516,7 @@ C1PCPU.prototype.setBinding = function(c, t, s, e)
this.bindings[s] = e;
e.onclick = function(cpu) {
return function() {
- if (!cpu.fRunning)
+ if (!cpu.aFlags.fRunning)
cpu.run();
else
cpu.halt();
@@ -579,7 +579,7 @@ C1PCPU.prototype.setBuffer = function(abMemory, start, end)
*/
C1PCPU.prototype.setPower = function(fOn, cmp)
{
- if (fOn && !this.fPower) {
+ if (fOn && !this.aFlags.fPowered) {
this.cmp = cmp;
/*
* Attach the Debugger, if any, to the CPU, so that the CPU can periodically
@@ -607,7 +607,7 @@ C1PCPU.prototype.setPower = function(fOn, cmp)
};
}(video);
}
- this.fPower = true;
+ this.aFlags.fPowered = true;
this.reset(true);
this.update();
}
@@ -880,7 +880,7 @@ C1PCPU.prototype.displayStatus = function()
*/
C1PCPU.prototype.isRunning = function()
{
- return this.fRunning;
+ return this.aFlags.fRunning;
};
/**
@@ -1051,7 +1051,7 @@ C1PCPU.prototype.run = function()
if (this.cmp) this.cmp.stop(this.msRunStart, this.nRunCycles);
return;
}
- if (!this.fRunning) {
+ if (!this.aFlags.fRunning) {
/*
* setSpeed() without a speed parameter leaves the selected speed in place, but also resets the
* cycle counter and timestamp for the current series of run() calls, calculates the maximum number
@@ -1060,7 +1060,7 @@ C1PCPU.prototype.run = function()
*/
this.setSpeed();
if (this.cmp) this.cmp.start();
- this.fRunning = true;
+ this.aFlags.fRunning = true;
if (this.bindings["run"]) this.bindings["run"].innerHTML = "Halt";
this.setFocus();
}
@@ -1107,7 +1107,7 @@ C1PCPU.prototype.run = function()
this.nCyclesNextYield += this.nCyclesPerYield;
break;
}
- } while (this.fRunning);
+ } while (this.aFlags.fRunning);
}
catch (e) {
this.halt();
@@ -1268,8 +1268,8 @@ C1PCPU.prototype.halt = function()
this.isBusy(true);
this.nBurstCycles -= this.nStepCycles;
this.nStepCycles = 0;
- if (this.fRunning) {
- this.fRunning = false;
+ if (this.aFlags.fRunning) {
+ this.aFlags.fRunning = false;
if (this.bindings["run"]) this.bindings["run"].innerHTML = "Run";
}
};
@@ -1303,7 +1303,7 @@ C1PCPU.prototype.update = function()
*/
C1PCPU.prototype.getCycles = function()
{
- return (this.fRunning? this.nRunCycles + this.nBurstCycles - this.nStepCycles : 0);
+ return (this.aFlags.fRunning? this.nRunCycles + this.nBurstCycles - this.nStepCycles : 0);
};
/**
diff --git a/my_modules/c1pjs-client/lib/debugger.js b/my_modules/c1pjs-client/lib/debugger.js
index 89a0a3866..708ad6ac1 100644
--- a/my_modules/c1pjs-client/lib/debugger.js
+++ b/my_modules/c1pjs-client/lib/debugger.js
@@ -579,8 +579,8 @@ if (DEBUGGER) {
*/
C1PDebugger.prototype.setPower = function(fOn, cmp)
{
- if (fOn && !this.fPower) {
- this.fPower = true;
+ if (fOn && !this.aFlags.fPowered) {
+ this.aFlags.fPowered = true;
this.cpu = cmp.getComponentByType("cpu");
}
};
diff --git a/my_modules/c1pjs-client/lib/disk.js b/my_modules/c1pjs-client/lib/disk.js
index 04482213f..8da1833a4 100644
--- a/my_modules/c1pjs-client/lib/disk.js
+++ b/my_modules/c1pjs-client/lib/disk.js
@@ -217,7 +217,7 @@ function C1PDiskController(parmsDC)
{
Component.call(this, "C1PDiskController", parmsDC);
- this.fPower = false;
+ this.aFlags.fPowered = false;
/*
* Our DiskController simulates the combination of an MC6820 PIA and an MC6850 ACIA.
@@ -733,8 +733,8 @@ C1PDiskController.prototype.setBuffer = function(abMemory, start, end, cpu)
*/
C1PDiskController.prototype.setPower = function(fOn, cmp)
{
- if (fOn && !this.fPower) {
- this.fPower = true;
+ if (fOn && !this.aFlags.fPowered) {
+ this.aFlags.fPowered = true;
if (DEBUGGER) this.dbg = cmp.getComponentByType("debugger");
}
};
diff --git a/my_modules/c1pjs-client/lib/keyboard.js b/my_modules/c1pjs-client/lib/keyboard.js
index 3874031dc..119b82783 100644
--- a/my_modules/c1pjs-client/lib/keyboard.js
+++ b/my_modules/c1pjs-client/lib/keyboard.js
@@ -122,7 +122,7 @@ function C1PKeyboard(parmsKbd)
{
Component.call(this, "C1PKeyboard", parmsKbd);
- this.fPower = false;
+ this.aFlags.fPowered = false;
this.nDefaultModel = parmsKbd['model'];
/*
@@ -516,8 +516,8 @@ C1PKeyboard.prototype.setModel = function(nModel)
*/
C1PKeyboard.prototype.setPower = function(fOn, cmp)
{
- if (fOn && !this.fPower) {
- this.fPower = true;
+ if (fOn && !this.aFlags.fPowered) {
+ this.aFlags.fPowered = true;
this.cmp = cmp;
if (DEBUGGER) this.dbg = cmp.getComponentByType("debugger");
}
diff --git a/my_modules/c1pjs-client/lib/panel.js b/my_modules/c1pjs-client/lib/panel.js
index 6efbf1944..92651180f 100644
--- a/my_modules/c1pjs-client/lib/panel.js
+++ b/my_modules/c1pjs-client/lib/panel.js
@@ -44,7 +44,7 @@ function C1PPanel(parmsPanel)
{
Component.call(this, "C1PPanel", parmsPanel);
- this.fPower = false;
+ this.aFlags.fPowered = false;
}
Component.subclass(Component, C1PPanel);
@@ -77,8 +77,8 @@ C1PPanel.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, contro
*/
C1PPanel.prototype.setPower = function(fOn, cmp)
{
- if (fOn && !this.fPower) {
- this.fPower = true;
+ if (fOn && !this.aFlags.fPowered) {
+ this.aFlags.fPowered = true;
this.cmp = cmp;
this.cpu = cmp.getComponentByType("cpu");
this.kbd = cmp.getComponentByType("keyboard");
diff --git a/my_modules/c1pjs-client/lib/rom.js b/my_modules/c1pjs-client/lib/rom.js
index 02505bee8..0b64da37d 100644
--- a/my_modules/c1pjs-client/lib/rom.js
+++ b/my_modules/c1pjs-client/lib/rom.js
@@ -115,8 +115,8 @@ C1PROM.prototype.setBuffer = function(abMemory, start, end, cpu)
*/
C1PROM.prototype.setPower = function(fOn, cmp)
{
- if (fOn && !this.fPower) {
- this.fPower = true;
+ if (fOn && !this.aFlags.fPowered) {
+ this.aFlags.fPowered = true;
if (DEBUGGER) this.dbg = cmp.getComponentByType("debugger");
}
};
diff --git a/my_modules/c1pjs-client/lib/serial.js b/my_modules/c1pjs-client/lib/serial.js
index c21a91f0b..fb1c898b7 100644
--- a/my_modules/c1pjs-client/lib/serial.js
+++ b/my_modules/c1pjs-client/lib/serial.js
@@ -44,7 +44,7 @@ function C1PSerialPort(parmsSerial)
{
Component.call(this, "C1PSerialPort", parmsSerial);
- this.fPower = false;
+ this.aFlags.fPowered = false;
this.fDemo = parmsSerial['demo'];
this.STATUS_NONE = 0x00;
@@ -160,8 +160,8 @@ C1PSerialPort.prototype.setBuffer = function(abMemory, start, end, cpu)
*/
C1PSerialPort.prototype.setPower = function(fOn, cmp)
{
- if (fOn && !this.fPower) {
- this.fPower = true;
+ if (fOn && !this.aFlags.fPowered) {
+ this.aFlags.fPowered = true;
this.cmp = cmp;
this.kbd = cmp.getComponentByType("keyboard");
if (DEBUGGER) this.dbg = cmp.getComponentByType("debugger");
diff --git a/my_modules/c1pjs-client/lib/video.js b/my_modules/c1pjs-client/lib/video.js
index 45efe9cd4..628ce3fa3 100644
--- a/my_modules/c1pjs-client/lib/video.js
+++ b/my_modules/c1pjs-client/lib/video.js
@@ -308,8 +308,8 @@ C1PVideo.prototype.setPower = function(fOn, cmp)
* it ourselves, too. This also means that updateScreen() need check only fPower and not isReady(),
* since we guarantee that the former implies the latter.
*/
- if (fOn && !this.fPower && this.isReady()) {
- this.fPower = true;
+ if (fOn && !this.aFlags.fPowered && this.isReady()) {
+ this.aFlags.fPowered = true;
if (DEBUGGER) this.dbg = cmp.getComponentByType("debugger");
/*
* If we have an associated keyboard, then ensure that the keyboard will be notified whenever
@@ -328,8 +328,8 @@ C1PVideo.prototype.setPower = function(fOn, cmp)
}
}
else
- if (!fOn && this.fPower) {
- this.fPower = false;
+ if (!fOn && this.aFlags.fPowered) {
+ this.aFlags.fPowered = false;
/*
* This is where we would add some method of blanking the display, without the disturbing the video
* buffer contents, and blocking all further updates to the display.
@@ -442,7 +442,7 @@ C1PVideo.prototype.initScreen = function()
C1PVideo.prototype.updateScreen = function()
{
var offset = 0;
- if (this.fPower) {
+ if (this.aFlags.fPowered) {
while (offset < this.cbScreen) {
var b = this.abMem[this.offVideo + offset];
if (this.abScreen[offset] != b) {
diff --git a/my_modules/c1pjs-client/templates/components.xsl b/my_modules/c1pjs-client/templates/components.xsl
index abdb87994..282d2a6d1 100644
--- a/my_modules/c1pjs-client/templates/components.xsl
+++ b/my_modules/c1pjs-client/templates/components.xsl
@@ -9,7 +9,7 @@
c1p
c1pjs
- 1.0.0
+ 1.x.x
www.pcjs.org
diff --git a/my_modules/pcjs-client/lib/.jshintrc b/my_modules/pcjs-client/lib/.jshintrc
index e7cb1bbbb..8d6a42516 100644
--- a/my_modules/pcjs-client/lib/.jshintrc
+++ b/my_modules/pcjs-client/lib/.jshintrc
@@ -15,7 +15,7 @@
"PCJSCLASS": true,
"DEBUGGER": true,
"PREFETCH": true,
- "FASTDISABLE": true,
+ "EAFUNCS": true,
"FATARRAYS": true,
"TYPEDARRAYS": true,
"Component": true,
diff --git a/my_modules/pcjs-client/lib/computer.js b/my_modules/pcjs-client/lib/computer.js
index 87a2590da..bea44bb70 100644
--- a/my_modules/pcjs-client/lib/computer.js
+++ b/my_modules/pcjs-client/lib/computer.js
@@ -123,11 +123,11 @@ function Computer(parmsComputer, parmsMachine, fSuspended) {
Component.call(this, "Computer", parmsComputer, Computer);
- this.fPowered = false;
+ this.aFlags.fPowered = false;
this.nBusWidth = parmsComputer['buswidth'];
this.resume = Computer.RESUME_NONE;
this.sStateData = null;
- this.fServerState = this.fSave = false;
+ this.fServerState = false;
this.url = parmsMachine? parmsMachine['url'] : null;
/*
@@ -544,9 +544,9 @@ Computer.prototype.powerOn = function(resume)
*/
Computer.prototype.powerRestore = function(component, stateComputer, fRepower, fRestore)
{
- if (!component.fPowered) {
+ if (!component.aFlags.fPowered) {
- component.fPowered = true;
+ component.aFlags.fPowered = true;
if (component.powerUp) {
@@ -649,9 +649,9 @@ Computer.prototype.donePowerOn = function(aParms)
var fRepower = (aParms[1] < 0);
var fRestore = aParms[2];
- if (DEBUG && this.fPowered) this.messageDebugger("Computer.donePowerOn(): redundant");
+ if (DEBUG && this.aFlags.fPowered) this.messageDebugger("Computer.donePowerOn(): redundant");
- this.fPowered = true;
+ this.aFlags.fPowered = true;
if (!this.fInitialized) {
this.println(Computer.sAppName + " v" + Computer.sAppVer + "\n" + Computer.sCopyright + "\n" + Computer.LICENSE);
@@ -754,7 +754,7 @@ Computer.prototype.powerOff = function(fSave, fShutdown)
data = this.cpu.powerDown(fSave, fShutdown);
if (typeof data === "object") stateComputer.set(this.cpu.id, data);
if (fShutdown) {
- this.cpu.fPowered = false;
+ this.cpu.aFlags.fPowered = false;
if (data === false) sState = null;
}
}
@@ -762,13 +762,13 @@ Computer.prototype.powerOff = function(fSave, fShutdown)
var aComponents = Component.getComponents(this.id);
for (var iComponent = 0; iComponent < aComponents.length; iComponent++) {
var component = aComponents[iComponent];
- if (component.fPowered) {
+ if (component.aFlags.fPowered) {
if (component.powerDown) {
data = component.powerDown(fSave, fShutdown);
if (typeof data === "object") stateComputer.set(component.id, data);
}
if (fShutdown) {
- component.fPowered = false;
+ component.aFlags.fPowered = false;
if (data === false) sState = null;
}
}
@@ -820,7 +820,7 @@ Computer.prototype.powerOff = function(fSave, fShutdown)
}
}
- if (fShutdown) this.fPowered = false;
+ if (fShutdown) this.aFlags.fPowered = false;
return sState;
};
@@ -1221,7 +1221,7 @@ Computer.init = function()
*/
var computer = new Computer(parmsComputer, parmsMachine, true);
- if (DEBUG) computer.messageDebugger("onInit(" + computer.fPowered + ")");
+ if (DEBUG) computer.messageDebugger("onInit(" + computer.aFlags.fPowered + ")");
/*
* For now, all we support are "reset" and "save" buttons. We may eventually add a "power"
@@ -1251,9 +1251,9 @@ Computer.show = function()
var computer = Component.getComponentByType("Computer", parmsComputer['id']);
if (computer) {
- if (DEBUG) computer.messageDebugger("onShow(" + computer.fInitialized + "," + computer.fPowered + ")");
+ if (DEBUG) computer.messageDebugger("onShow(" + computer.fInitialized + "," + computer.aFlags.fPowered + ")");
- if (computer.fInitialized && !computer.fPowered) {
+ if (computer.fInitialized && !computer.aFlags.fPowered) {
/**
* Repower the computer, notifying every component to continue running as-is.
*/
@@ -1298,9 +1298,9 @@ Computer.exit = function()
var computer = Component.getComponentByType("Computer", parmsComputer['id']);
if (computer) {
- if (DEBUG) computer.messageDebugger("onExit(" + computer.fPowered + ")");
+ if (DEBUG) computer.messageDebugger("onExit(" + computer.aFlags.fPowered + ")");
- if (computer.fPowered) {
+ if (computer.aFlags.fPowered) {
/**
* Power "down" the computer, giving every component an opportunity to save its state,
* but only if 'resume' has been set AND there is no valid resume path (because if a valid resume
diff --git a/my_modules/pcjs-client/lib/cpu.js b/my_modules/pcjs-client/lib/cpu.js
index f40ea164e..b7349a94a 100644
--- a/my_modules/pcjs-client/lib/cpu.js
+++ b/my_modules/pcjs-client/lib/cpu.js
@@ -80,23 +80,24 @@ function CPU(parmsCPU, nCyclesDefault)
var nMultiplier = parmsCPU['multiplier'] || 1;
- this.nCyclesPerSecond = nCycles;
+ this.aCounts = {};
+ this.aCounts.nCyclesPerSecond = nCycles;
/*
* nCyclesMultiplier replaces the old "speed" variable (0, 1, 2) and eliminates the need for
* the constants (SPEED_SLOW, SPEED_FAST and SPEED_MAX). The UI simply doubles the multiplier
* until we've exceeded the host's speed limit and then starts the multiplier over at 1.
*/
- this.nCyclesMultiplier = nMultiplier;
- this.mhzDefault = Math.round(this.nCyclesPerSecond / 10000) / 100;
+ this.aCounts.nCyclesMultiplier = nMultiplier;
+ this.aCounts.mhzDefault = Math.round(this.aCounts.nCyclesPerSecond / 10000) / 100;
/*
* TODO: Take care of this with an initial setSpeed() call instead?
*/
- this.mhzTarget = this.mhzDefault * this.nCyclesMultiplier;
+ this.aCounts.mhzTarget = this.aCounts.mhzDefault * this.aCounts.nCyclesMultiplier;
- this.fPowered = false;
- this.fRunning = false;
- this.fAutoStart = parmsCPU['autoStart'];
+ this.aFlags.fPowered = false;
+ this.aFlags.fRunning = false;
+ this.aFlags.fAutoStart = parmsCPU['autoStart'];
/*
* Provide a power-saving URL-based way of overriding the 'autostart' setting;
@@ -105,7 +106,7 @@ function CPU(parmsCPU, nCyclesDefault)
*/
var sAutoStart = Component.parmsURL['autostart'];
if (sAutoStart !== undefined) {
- this.fAutoStart = (sAutoStart == "true"? true : (sAutoStart == "false"? false : null));
+ this.aFlags.fAutoStart = (sAutoStart == "true"? true : (sAutoStart == "false"? false : null));
}
/*
@@ -117,11 +118,11 @@ function CPU(parmsCPU, nCyclesDefault)
* command ("x"); for example, "x cs int 5000" will set nCyclesChecksumInterval to 5000
* and call resetChecksum().
*/
- this.fChecksum = false;
- this.nChecksum = this.nCyclesChecksumNext = 0;
- this.nCyclesChecksumStart = parmsCPU["csStart"];
- this.nCyclesChecksumInterval = parmsCPU["csInterval"];
- this.nCyclesChecksumStop = parmsCPU["csStop"];
+ this.aFlags.fChecksum = false;
+ this.aCounts.nChecksum = this.aCounts.nCyclesChecksumNext = 0;
+ this.aCounts.nCyclesChecksumStart = parmsCPU["csStart"];
+ this.aCounts.nCyclesChecksumInterval = parmsCPU["csInterval"];
+ this.aCounts.nCyclesChecksumStop = parmsCPU["csStop"];
var cpu = this;
this.onRunTimeout = function() { cpu.runCPU(); };
@@ -138,16 +139,16 @@ Component.subclass(Component, CPU);
* calcCycles(), which uses the nCyclesPerSecond passed to the constructor as a starting
* point and computes the following variables:
*
- * this.nCyclesPerYield (this.nCyclesPerSecond / CPU.YIELDS_PER_SECOND)
- * this.nCyclesPerVideoUpdate (this.nCyclesPerSecond / CPU.VIDEO_UPDATES_PER_SECOND)
- * this.nCyclesPerStatusUpdate (this.nCyclesPerSecond / CPU.STATUS_UPDATES_PER_SECOND)
+ * this.aCounts.nCyclesPerYield (this.aCounts.nCyclesPerSecond / CPU.YIELDS_PER_SECOND)
+ * this.aCounts.nCyclesPerVideoUpdate (this.aCounts.nCyclesPerSecond / CPU.VIDEO_UPDATES_PER_SECOND)
+ * this.aCounts.nCyclesPerStatusUpdate (this.aCounts.nCyclesPerSecond / CPU.STATUS_UPDATES_PER_SECOND)
*
* The above variables are also multiplied by any cycle multiplier in effect, via setSpeed(),
* and then they're used to initialize another set of variables for each runCPU() iteration:
*
- * this.nCyclesNextYield <= this.nCyclesPerYield
- * this.nCyclesNextVideoUpdate <= this.nCyclesPerVideoUpdate
- * this.nCyclesNextStatusUpdate <= this.nCyclesPerStatusUpdate
+ * this.aCounts.nCyclesNextYield <= this.aCounts.nCyclesPerYield
+ * this.aCounts.nCyclesNextVideoUpdate <= this.aCounts.nCyclesPerVideoUpdate
+ * this.aCounts.nCyclesNextStatusUpdate <= this.aCounts.nCyclesPerStatusUpdate
*/
CPU.YIELDS_PER_SECOND = 30;
CPU.VIDEO_UPDATES_PER_SECOND = 60; // WARNING: if you change this, beware of side-effects in the Video component
@@ -264,7 +265,7 @@ CPU.prototype.powerUp = function(data, fRepower)
this.println("No debugger detected");
}
}
- this.fPowered = true;
+ this.aFlags.fPowered = true;
if (!this.autoStart() && this.dbg) this.dbg.updateStatus();
this.updateCPU();
return true;
@@ -279,7 +280,7 @@ CPU.prototype.powerUp = function(data, fRepower)
*/
CPU.prototype.powerDown = function(fSave)
{
- this.fPowered = false;
+ this.aFlags.fPowered = false;
return fSave && this.save ? this.save() : true;
};
@@ -291,7 +292,7 @@ CPU.prototype.powerDown = function(fSave)
*/
CPU.prototype.autoStart = function()
{
- if (this.fAutoStart === true || this.fAutoStart === null && (!DEBUGGER || !this.dbg) && this.bindings["run"] === undefined) {
+ if (this.aFlags.fAutoStart === true || this.aFlags.fAutoStart === null && (!DEBUGGER || !this.dbg) && this.bindings["run"] === undefined) {
this.runCPU(); // start running automatically on power-up, assuming there's no Debugger
return true;
}
@@ -318,7 +319,7 @@ CPU.prototype.setFocus = function()
*/
CPU.prototype.isPowered = function()
{
- if (!this.fPowered) {
+ if (!this.aFlags.fPowered) {
this.println(this.toString() + " not powered");
return false;
}
@@ -333,7 +334,7 @@ CPU.prototype.isPowered = function()
*/
CPU.prototype.isRunning = function()
{
- return this.fRunning;
+ return this.aFlags.fRunning;
};
/**
@@ -361,14 +362,14 @@ CPU.prototype.getChecksum = function()
*/
CPU.prototype.resetChecksum = function()
{
- if (this.nCyclesChecksumStart === undefined) this.nCyclesChecksumStart = 0;
- if (this.nCyclesChecksumInterval === undefined) this.nCyclesChecksumInterval = -1;
- if (this.nCyclesChecksumStop === undefined) this.nCyclesChecksumStop = -1;
- this.fChecksum = (this.nCyclesChecksumStart >= 0 && this.nCyclesChecksumInterval > 0);
- if (this.fChecksum) {
- this.nChecksum = 0;
- this.nCyclesChecksumNext = this.nCyclesChecksumStart - this.nTotalCycles;
- // this.nCyclesChecksumNext = this.nCyclesChecksumStart + this.nCyclesChecksumInterval - (this.nTotalCycles % this.nCyclesChecksumInterval);
+ if (this.aCounts.nCyclesChecksumStart === undefined) this.aCounts.nCyclesChecksumStart = 0;
+ if (this.aCounts.nCyclesChecksumInterval === undefined) this.aCounts.nCyclesChecksumInterval = -1;
+ if (this.aCounts.nCyclesChecksumStop === undefined) this.aCounts.nCyclesChecksumStop = -1;
+ this.aFlags.fChecksum = (this.aCounts.nCyclesChecksumStart >= 0 && this.aCounts.nCyclesChecksumInterval > 0);
+ if (this.aFlags.fChecksum) {
+ this.aCounts.nChecksum = 0;
+ this.aCounts.nCyclesChecksumNext = this.aCounts.nCyclesChecksumStart - this.nTotalCycles;
+ // this.aCounts.nCyclesChecksumNext = this.aCounts.nCyclesChecksumStart + this.aCounts.nCyclesChecksumInterval - (this.nTotalCycles % this.aCounts.nCyclesChecksumInterval);
return true;
}
return false;
@@ -387,20 +388,20 @@ CPU.prototype.resetChecksum = function()
*/
CPU.prototype.updateChecksum = function(nCycles)
{
- if (this.fChecksum) {
+ if (this.aFlags.fChecksum) {
/*
* Get a 32-bit summation of the current CPU state and add it to our running 32-bit checksum
*/
var fDisplay = false;
- this.nChecksum = (this.nChecksum + this.getChecksum()) | 0;
- this.nCyclesChecksumNext -= nCycles;
- if (this.nCyclesChecksumNext <= 0) {
- this.nCyclesChecksumNext += this.nCyclesChecksumInterval;
+ this.aCounts.nChecksum = (this.aCounts.nChecksum + this.getChecksum()) | 0;
+ this.aCounts.nCyclesChecksumNext -= nCycles;
+ if (this.aCounts.nCyclesChecksumNext <= 0) {
+ this.aCounts.nCyclesChecksumNext += this.aCounts.nCyclesChecksumInterval;
fDisplay = true;
}
- if (this.nCyclesChecksumStop >= 0) {
- if (this.nCyclesChecksumStop <= this.getCycles()) {
- this.nCyclesChecksumInterval = this.nCyclesChecksumStop = -1;
+ if (this.aCounts.nCyclesChecksumStop >= 0) {
+ if (this.aCounts.nCyclesChecksumStop <= this.getCycles()) {
+ this.aCounts.nCyclesChecksumInterval = this.aCounts.nCyclesChecksumStop = -1;
this.resetChecksum();
this.haltCPU();
fDisplay = true;
@@ -421,7 +422,7 @@ CPU.prototype.updateChecksum = function(nCycles)
*/
CPU.prototype.displayChecksum = function()
{
- this.println(this.getCycles() + " cycles: " + "checksum=" + str.toHex(this.nChecksum));
+ this.println(this.getCycles() + " cycles: " + "checksum=" + str.toHex(this.aCounts.nChecksum));
};
/**
@@ -492,7 +493,7 @@ CPU.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
case "run":
this.bindings[sBinding] = control;
control.onclick = function onClickRun() {
- if (!cpu.fRunning)
+ if (!cpu.aFlags.fRunning)
cpu.runCPU(true);
else
cpu.haltCPU(true);
@@ -521,7 +522,7 @@ CPU.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
case "setSpeed":
this.bindings[sBinding] = control;
control.onclick = function onClickSetSpeed() {
- cpu.setSpeed(cpu.nCyclesMultiplier << 1, true);
+ cpu.setSpeed(cpu.aCounts.nCyclesMultiplier << 1, true);
};
control.innerHTML = this.getSpeedTarget();
fBound = true;
@@ -605,26 +606,26 @@ CPU.prototype.calcCycles = function(fRecalc)
*/
var vMultiplier = 1;
if (fRecalc) {
- if (this.nCyclesMultiplier > 1 && this.mhz) {
- vMultiplier = (this.mhz / this.mhzDefault);
+ if (this.aCounts.nCyclesMultiplier > 1 && this.aCounts.mhz) {
+ vMultiplier = (this.aCounts.mhz / this.aCounts.mhzDefault);
}
}
- this.msPerYield = Math.round(1000 / CPU.YIELDS_PER_SECOND);
- this.nCyclesPerBurst = Math.floor(this.nCyclesPerSecond / nMostUpdatesPerSecond * vMultiplier);
- this.nCyclesPerYield = Math.floor(this.nCyclesPerSecond / CPU.YIELDS_PER_SECOND * vMultiplier);
- this.nCyclesPerVideoUpdate = Math.floor(this.nCyclesPerSecond / CPU.VIDEO_UPDATES_PER_SECOND * vMultiplier);
- this.nCyclesPerStatusUpdate = Math.floor(this.nCyclesPerSecond / CPU.STATUS_UPDATES_PER_SECOND * vMultiplier);
+ this.aCounts.msPerYield = Math.round(1000 / CPU.YIELDS_PER_SECOND);
+ this.aCounts.nCyclesPerBurst = Math.floor(this.aCounts.nCyclesPerSecond / nMostUpdatesPerSecond * vMultiplier);
+ this.aCounts.nCyclesPerYield = Math.floor(this.aCounts.nCyclesPerSecond / CPU.YIELDS_PER_SECOND * vMultiplier);
+ this.aCounts.nCyclesPerVideoUpdate = Math.floor(this.aCounts.nCyclesPerSecond / CPU.VIDEO_UPDATES_PER_SECOND * vMultiplier);
+ this.aCounts.nCyclesPerStatusUpdate = Math.floor(this.aCounts.nCyclesPerSecond / CPU.STATUS_UPDATES_PER_SECOND * vMultiplier);
/*
* And initialize "next" yield, video update, and status update cycle "threshold" counters to those "per" values
*/
if (!fRecalc) {
- this.nCyclesNextYield = this.nCyclesPerYield;
- this.nCyclesNextVideoUpdate = this.nCyclesPerVideoUpdate;
- this.nCyclesNextStatusUpdate = this.nCyclesPerStatusUpdate;
+ this.aCounts.nCyclesNextYield = this.aCounts.nCyclesPerYield;
+ this.aCounts.nCyclesNextVideoUpdate = this.aCounts.nCyclesPerVideoUpdate;
+ this.aCounts.nCyclesNextStatusUpdate = this.aCounts.nCyclesPerStatusUpdate;
}
- this.nRecalcCycles = 0;
+ this.aCounts.nCyclesRecalc = 0;
};
/**
@@ -647,11 +648,11 @@ CPU.prototype.calcCycles = function(fRecalc)
CPU.prototype.getCycles = function(fScaled)
{
var nCycles = this.nTotalCycles + this.nRunCycles + this.nBurstCycles - this.nStepCycles;
- if (fScaled && this.nCyclesMultiplier > 1 && this.mhz > this.mhzDefault) {
+ if (fScaled && this.aCounts.nCyclesMultiplier > 1 && this.aCounts.mhz > this.aCounts.mhzDefault) {
/*
- * We could scale the current cycle count by the current effective speed (this.mhz); eg:
+ * We could scale the current cycle count by the current effective speed (this.aCounts.mhz); eg:
*
- * nCycles = Math.round(nCycles / (this.mhz / this.mhzDefault));
+ * nCycles = Math.round(nCycles / (this.aCounts.mhz / this.aCounts.mhzDefault));
*
* but that speed will fluctuate somewhat: large fluctuations at first, but increasingly smaller
* fluctuations after each burst of instructions that runCPU() executes.
@@ -666,7 +667,7 @@ CPU.prototype.getCycles = function(fScaled)
* interface allows any value, as does the CPU "multiplier" parmsCPU property (from the machine's
* XML file).
*/
- nCycles = Math.round(nCycles / this.nCyclesMultiplier);
+ nCycles = Math.round(nCycles / this.aCounts.nCyclesMultiplier);
}
return nCycles;
};
@@ -681,7 +682,7 @@ CPU.prototype.getCycles = function(fScaled)
*/
CPU.prototype.getCyclesPerSecond = function()
{
- return this.nCyclesPerSecond;
+ return this.aCounts.nCyclesPerSecond;
};
/**
@@ -695,7 +696,7 @@ CPU.prototype.getCyclesPerSecond = function()
*/
CPU.prototype.resetCycles = function()
{
- this.mhz = 0;
+ this.aCounts.mhz = 0;
this.setBurstDivisor(1);
this.nTotalCycles = this.nRunCycles = this.nBurstCycles = this.nStepCycles = 0;
this.resetChecksum();
@@ -709,7 +710,7 @@ CPU.prototype.resetCycles = function()
* @return {number} the current speed multiplier
*/
CPU.prototype.getSpeed = function() {
- return this.nCyclesMultiplier;
+ return this.aCounts.nCyclesMultiplier;
};
/**
@@ -722,7 +723,7 @@ CPU.prototype.getSpeedCurrent = function() {
/*
* TODO: Has toFixed() been "fixed" in all browsers (eg, IE) to return a rounded value now?
*/
- return ((this.fRunning && this.mhz)? (this.mhz.toFixed(2) + "Mhz") : "Stopped");
+ return ((this.aFlags.fRunning && this.aCounts.mhz)? (this.aCounts.mhz.toFixed(2) + "Mhz") : "Stopped");
};
/**
@@ -735,7 +736,7 @@ CPU.prototype.getSpeedTarget = function() {
/*
* TODO: Has toFixed() been "fixed" in all browsers (eg, IE) to return a rounded value now?
*/
- return this.mhzTarget.toFixed(2) + "Mhz";
+ return this.aCounts.mhzTarget.toFixed(2) + "Mhz";
};
/**
@@ -756,11 +757,11 @@ CPU.prototype.setSpeed = function(nMultiplier, fOnClick)
* If we couldn't reach at least 80% (0.8) of the current target speed,
* then revert the multiplier back to one.
*/
- if (this.mhz/this.mhzTarget < 0.8) nMultiplier = 1;
- this.nCyclesMultiplier = nMultiplier;
- var mhz = this.mhzDefault * this.nCyclesMultiplier;
- if (this.mhzTarget != mhz) {
- this.mhzTarget = mhz;
+ if (this.aCounts.mhz / this.aCounts.mhzTarget < 0.8) nMultiplier = 1;
+ this.aCounts.nCyclesMultiplier = nMultiplier;
+ var mhz = this.aCounts.mhzDefault * this.aCounts.nCyclesMultiplier;
+ if (this.aCounts.mhzTarget != mhz) {
+ this.aCounts.mhzTarget = mhz;
var sSpeed = this.getSpeedTarget();
if (this.bindings["setSpeed"]) this.bindings["setSpeed"].innerHTML = sSpeed;
this.println("target speed: " + sSpeed);
@@ -769,10 +770,10 @@ CPU.prototype.setSpeed = function(nMultiplier, fOnClick)
}
this.addCycles(this.nRunCycles);
this.nRunCycles = 0;
- this.msRunStart = usr.getTime();
- this.msEndThisRun = 0;
+ this.aCounts.msStartRun = usr.getTime();
+ this.aCounts.msEndThisRun = 0;
this.calcCycles();
- return this.mhzTarget;
+ return this.aCounts.mhzTarget;
};
/**
@@ -785,7 +786,7 @@ CPU.prototype.setSpeed = function(nMultiplier, fOnClick)
CPU.prototype.calcSpeed = function(nCycles, msElapsed)
{
if (msElapsed) {
- this.mhz = Math.round(nCycles / (msElapsed * 10)) / 100;
+ this.aCounts.mhz = Math.round(nCycles / (msElapsed * 10)) / 100;
if (msElapsed >= 86400000) {
this.nTotalCycles = 0;
if (this.chipset) this.chipset.updateAllTimers(true);
@@ -801,11 +802,11 @@ CPU.prototype.calcSpeed = function(nCycles, msElapsed)
*/
CPU.prototype.calcStartTime = function()
{
- if (this.nRecalcCycles >= this.nCyclesPerSecond) {
+ if (this.aCounts.nCyclesRecalc >= this.aCounts.nCyclesPerSecond) {
this.calcCycles(true);
}
- this.nCyclesThisRun = 0;
- this.msStartThisRun = usr.getTime();
+ this.aCounts.nCyclesThisRun = 0;
+ this.aCounts.msStartThisRun = usr.getTime();
/*
* Try to detect situations where the browser may have throttled us, such as when the user switches
@@ -818,7 +819,7 @@ CPU.prototype.calcStartTime = function()
*
* We can detect throttling/lagging by verifying that msEndThisRun (which was set at the end of the
* previous run and includes any requested sleep time) is comparable to the current msStartThisRun;
- * if the delta is significant, we compensate by bumping msRunStart forward by that delta.
+ * if the delta is significant, we compensate by bumping msStartRun forward by that delta.
*
* This shouldn't be triggered when the Debugger halts the CPU, because setSpeed() -- which is called
* whenever the CPU starts running again -- zeroes msEndThisRun.
@@ -832,19 +833,19 @@ CPU.prototype.calcStartTime = function()
* to hit its target speed, since you would expect any instruction that displays a message to be an
* EXTREMELY slow instruction.
*/
- if (this.msEndThisRun) {
- var msDelta = this.msStartThisRun - this.msEndThisRun;
- if (msDelta > this.msPerYield) {
+ if (this.aCounts.msEndThisRun) {
+ var msDelta = this.aCounts.msStartThisRun - this.aCounts.msEndThisRun;
+ if (msDelta > this.aCounts.msPerYield) {
if (MAXDEBUG) this.println("large time delay: " + msDelta + "ms");
- this.msRunStart += msDelta;
+ this.aCounts.msStartRun += msDelta;
/*
- * Bumping msRunStart forward should NEVER cause it to exceed msStartThisRun; however, just
+ * Bumping msStartRun forward should NEVER cause it to exceed msStartThisRun; however, just
* in case, I make absolutely sure it cannot happen, since doing so could result in negative
* speed calculations.
*/
- Component.assert(this.msRunStart <= this.msStartThisRun);
- if (this.msRunStart > this.msStartThisRun) {
- this.msRunStart = this.msStartThisRun;
+ Component.assert(this.aCounts.msStartRun <= this.aCounts.msStartThisRun);
+ if (this.aCounts.msStartRun > this.aCounts.msStartThisRun) {
+ this.aCounts.msStartRun = this.aCounts.msStartThisRun;
}
}
}
@@ -858,47 +859,47 @@ CPU.prototype.calcStartTime = function()
*/
CPU.prototype.calcRemainingTime = function()
{
- this.msEndThisRun = usr.getTime();
+ this.aCounts.msEndThisRun = usr.getTime();
- var msYield = this.msPerYield;
- if (this.nCyclesThisRun) {
+ var msYield = this.aCounts.msPerYield;
+ if (this.aCounts.nCyclesThisRun) {
/*
* Normally, we would assume we executed a full quota of work over msPerYield, but since the CPU
* now has the option of calling yieldCPU(), that might not be true. If nCyclesThisRun is correct, then
* the ratio of nCyclesThisRun/nCyclesPerYield should represent the percentage of work we performed,
* and so applying that percentage to msPerYield should give us a better estimate of work vs. time.
*/
- msYield = Math.round(msYield * this.nCyclesThisRun / this.nCyclesPerYield);
+ msYield = Math.round(msYield * this.aCounts.nCyclesThisRun / this.aCounts.nCyclesPerYield);
}
- var msElapsedThisRun = this.msEndThisRun - this.msStartThisRun;
+ var msElapsedThisRun = this.aCounts.msEndThisRun - this.aCounts.msStartThisRun;
var msRemainsThisRun = msYield - msElapsedThisRun;
/*
* We could pass only "this run" results to calcSpeed():
*
- * nCycles = this.nCyclesThisRun;
+ * nCycles = this.aCounts.nCyclesThisRun;
* msElapsed = msElapsedThisRun;
*
* but it seems preferable to use longer time periods and hopefully get a more accurate speed.
*
- * Also, if msRemainsThisRun >= 0 && this.nCyclesMultiplier == 1, we could pass these results instead:
+ * Also, if msRemainsThisRun >= 0 && this.aCounts.nCyclesMultiplier == 1, we could pass these results instead:
*
- * nCycles = this.nCyclesThisRun;
- * msElapsed = this.msPerYield;
+ * nCycles = this.aCounts.nCyclesThisRun;
+ * msElapsed = this.aCounts.msPerYield;
*
* to insure that we display a smooth, constant N Mhz. But for now, I prefer seeing any fluctuations.
*/
var nCycles = this.nRunCycles;
- var msElapsed = this.msEndThisRun - this.msRunStart;
+ var msElapsed = this.aCounts.msEndThisRun - this.aCounts.msStartRun;
- if (MAXDEBUG && msRemainsThisRun < 0 && this.nCyclesMultiplier > 1) {
+ if (MAXDEBUG && msRemainsThisRun < 0 && this.aCounts.nCyclesMultiplier > 1) {
this.println("warning: updates @" + msElapsedThisRun + "ms (prefer " + Math.round(msYield) + "ms)");
}
this.calcSpeed(nCycles, msElapsed);
- if (msRemainsThisRun < 0 || this.mhz < this.mhzTarget) {
+ if (msRemainsThisRun < 0 || this.aCounts.mhz < this.aCounts.mhzTarget) {
/*
* If the last burst took MORE time than we allotted (ie, it's taking more than 1 second to simulate
* nCyclesPerSecond), all we can do is yield for as little time as possible (ie, 0ms) and hope that the
@@ -908,16 +909,16 @@ CPU.prototype.calcRemainingTime = function()
}
/*
- * Last but not least, update nRecalcCycles, so that when runCPU() starts up again and calls calcStartTime(),
+ * Last but not least, update nCyclesRecalc, so that when runCPU() starts up again and calls calcStartTime(),
* it'll be ready to decide if calcCycles() should be called again.
*/
- this.nRecalcCycles += this.nCyclesThisRun;
+ this.aCounts.nCyclesRecalc += this.aCounts.nCyclesThisRun;
if (DEBUG && this.dbg && this.dbg.messageEnabled(Debugger.MESSAGE_LOG) && msRemainsThisRun) {
- this.dbg.message("at " + this.msEndThisRun + "ms, calcRemainingTime returned " + msRemainsThisRun + "ms to sleep");
+ this.dbg.message("at " + this.aCounts.msEndThisRun + "ms, calcRemainingTime returned " + msRemainsThisRun + "ms to sleep");
}
- this.msEndThisRun += msRemainsThisRun;
+ this.aCounts.msEndThisRun += msRemainsThisRun;
return msRemainsThisRun;
};
@@ -934,28 +935,28 @@ CPU.prototype.runCPU = function(fOnClick)
if (this.cmp) this.cmp.stop(usr.getTime(), this.getCycles());
return;
}
- if (!this.fRunning) {
+ if (!this.aFlags.fRunning) {
/*
* setSpeed() without a speed parameter leaves the selected speed in place, but also resets the
* cycle counter and timestamp for the current series of runCPU() calls, calculates the maximum number
- * of cycles for each burst based on the last known effective CPU speed, and resets the nRecalcCycles
+ * of cycles for each burst based on the last known effective CPU speed, and resets the nCyclesRecalc
* threshold counter.
*/
this.setSpeed();
- if (this.cmp) this.cmp.start(this.msRunStart, this.getCycles());
- this.fRunning = true;
+ if (this.cmp) this.cmp.start(this.aCounts.msStartRun, this.getCycles());
+ this.aFlags.fRunning = true;
if (this.chipset) this.chipset.setSpeaker();
if (this.bindings["run"]) this.bindings["run"].innerHTML = "Halt";
if (fOnClick) this.setFocus();
}
/*
* calcStartTime() initializes the cycle counter and timestamp for this runCPU() invocation, and optionally
- * recalculates the the maximum number of cycles for each burst if the nRecalcCycles threshold has been reached.
+ * recalculates the the maximum number of cycles for each burst if the nCyclesRecalc threshold has been reached.
*/
this.calcStartTime();
try {
do {
- var nCyclesPerBurst = this.fChecksum? 1 : Math.round(this.nCyclesPerBurst / this.nBurstDivisor);
+ var nCyclesPerBurst = this.aFlags.fChecksum? 1 : Math.round(this.aCounts.nCyclesPerBurst / this.nBurstDivisor);
/*
* This is an alternative to ChipSet calling setBurstDivisor(). Unfortunately, this doesn't seem
@@ -982,28 +983,28 @@ CPU.prototype.runCPU = function(fOnClick)
*/
var nCycles = this.nBurstCycles - this.nStepCycles;
this.nRunCycles += nCycles;
- this.nCyclesThisRun += nCycles;
+ this.aCounts.nCyclesThisRun += nCycles;
this.addCycles(0, true);
this.updateChecksum(nCycles);
- this.nCyclesNextVideoUpdate -= nCycles;
- if (this.nCyclesNextVideoUpdate <= 0) {
- this.nCyclesNextVideoUpdate += this.nCyclesPerVideoUpdate;
+ this.aCounts.nCyclesNextVideoUpdate -= nCycles;
+ if (this.aCounts.nCyclesNextVideoUpdate <= 0) {
+ this.aCounts.nCyclesNextVideoUpdate += this.aCounts.nCyclesPerVideoUpdate;
this.displayVideo();
}
- this.nCyclesNextStatusUpdate -= nCycles;
- if (this.nCyclesNextStatusUpdate <= 0) {
- this.nCyclesNextStatusUpdate += this.nCyclesPerStatusUpdate;
+ this.aCounts.nCyclesNextStatusUpdate -= nCycles;
+ if (this.aCounts.nCyclesNextStatusUpdate <= 0) {
+ this.aCounts.nCyclesNextStatusUpdate += this.aCounts.nCyclesPerStatusUpdate;
this.displayStatus();
}
- this.nCyclesNextYield -= nCycles;
- if (this.nCyclesNextYield <= 0) {
- this.nCyclesNextYield += this.nCyclesPerYield;
+ this.aCounts.nCyclesNextYield -= nCycles;
+ if (this.aCounts.nCyclesNextYield <= 0) {
+ this.aCounts.nCyclesNextYield += this.aCounts.nCyclesPerYield;
break;
}
- } while (this.fRunning);
+ } while (this.aFlags.fRunning);
}
catch (e) {
this.haltCPU();
@@ -1029,7 +1030,7 @@ CPU.prototype.runCPU = function(fOnClick)
*/
CPU.prototype.setBurstCycles = function(nCycles)
{
- if (this.fRunning) {
+ if (this.aFlags.fRunning) {
var nDelta = this.nStepCycles - nCycles;
/*
* NOTE: If nDelta is negative, we will actually be increasing nStepCycles and nBurstCycles.
@@ -1060,12 +1061,12 @@ CPU.prototype.haltCPU = function(fComplete)
this.nStepCycles = 0;
this.addCycles(this.nRunCycles);
this.nRunCycles = 0;
- if (this.fRunning) {
- this.fRunning = false;
+ if (this.aFlags.fRunning) {
+ this.aFlags.fRunning = false;
if (this.chipset) this.chipset.setSpeaker();
if (this.bindings["run"]) this.bindings["run"].innerHTML = "Run";
}
- this.fComplete = fComplete;
+ this.aFlags.fComplete = fComplete;
};
/**
@@ -1108,7 +1109,7 @@ CPU.prototype.updateCPU = function()
*/
CPU.prototype.yieldCPU = function()
{
- this.nCyclesNextYield = 0; // this will break us out of runCPU(), once we break out of stepCPU()
+ this.aCounts.nCyclesNextYield = 0; // this will break us out of runCPU(), once we break out of stepCPU()
this.nBurstCycles -= this.nStepCycles;
this.nStepCycles = 0; // this will break us out of stepCPU()
/*
diff --git a/my_modules/pcjs-client/lib/debugger.js b/my_modules/pcjs-client/lib/debugger.js
index 23d5fe486..8bbe507ca 100644
--- a/my_modules/pcjs-client/lib/debugger.js
+++ b/my_modules/pcjs-client/lib/debugger.js
@@ -235,62 +235,62 @@ if (DEBUGGER) {
* 286 or 386, then I might as well leave some of that support in place, since the impact is minimal).
*/
Debugger.INS = {
- NONE: 0, AAA: 1, AAD: 2, AAM: 3, AAS: 4, ADC: 5, ADD: 6, AND: 7,
- ARPL: 8, ASIZE: 9, BOUND: 10, BSF: 11, BSR: 12, BT: 13, BTC: 14, BTR: 15,
- BTS: 16, CALL: 17, CBW: 18, CLC: 19, CLD: 20, CLI: 21, CLTS: 22, CMC: 23,
- CMP: 24, CMPSB: 25, CMPSW: 26, CS: 27, CWD: 28, DAA: 29, DAS: 30, DEC: 31,
- DIV: 32, DS: 33, ENTER: 34, ES: 35, ESC: 36, FADD: 37, FBLD: 38, FBSTP: 39,
- FCOM: 40, FCOMP: 41, FDIV: 42, FDIVR: 43, FIADD: 44, FICOM: 45, FICOMP: 46, FIDIV: 47,
- FIDIVR: 48, FILD: 49, FIMUL: 50, FIST: 51, FISTP: 52, FISUB: 53, FISUBR: 54, FLD: 55,
- FLDCW: 56, FLDENV: 57, FMUL: 58, FNSAVE: 59, FNSTCW: 60, FNSTENV: 61, FNSTSW: 62, FRSTOR: 63,
- FS: 64, FST: 65, FSTP: 66, FSUB: 67, FSUBR: 68, GBP: 69, GS: 70, HLT: 71,
- IDIV: 72, IMUL: 73, IN: 74, INC: 75, INS: 76, INT: 77, INT3: 78, INTO: 79,
- IRET: 80, JBE: 81, JC: 82, JCXZ: 83, JG: 84, JGE: 85, JL: 86, JLE: 87,
- JMP: 88, JNBE: 89, JNC: 90, JNO: 91, JNP: 92, JNS: 93, JNZ: 94, JO: 95,
- JP: 96, JS: 97, JZ: 98, LAHF: 99, LAR: 100, LDS: 101, LEA: 102, LEAVE: 103,
- LES: 104, LFS: 105, LGDT: 106, LGS: 107, LIDT: 108, LLDT: 109, LMSW: 110, LOCK: 111,
- LODSB: 112, LODSW: 113, LOOP: 114, LOOPNZ: 115, LOOPZ: 116, LSL: 117, LSS: 118, LTR: 119,
- MOV: 120, MOVSB: 121, MOVSW: 122, MOVSX: 123, MOVZX: 124, MUL: 125, NEG: 126, NOP: 127,
- NOT: 128, OR: 129, OSIZE: 130, OUT: 131, OUTS: 132, POP: 133, POPA: 134, POPF: 135,
- PUSH: 136, PUSHA: 137, PUSHF: 138, RCL: 139, RCR: 140, REPNZ: 141, REPZ: 142, RET: 143,
- RETF: 144, ROL: 145, ROR: 146, SAHF: 147, SAR: 148, SBB: 149, SCASB: 150, SCASW: 151,
- SETBE: 152, SETC: 153, SETG: 154, SETGE: 155, SETL: 156, SETLE: 157, SETNBE: 158, SETNC: 159,
- SETNO: 160, SETNP: 161, SETNS: 162, SETNZ: 163, SETO: 164, SETP: 165, SETS: 166, SETZ: 167,
- SGDT: 168, SHL: 169, SHLD: 170, SHR: 171, SHRD: 172, SIDT: 173, SLDT: 174, SMSW: 175,
- SS: 176, STC: 177, STD: 178, STI: 179, STOSB: 180, STOSW: 181, STR: 182, SUB: 183,
- TEST: 184, VERR: 185, VERW: 186, WAIT: 187, XCHG: 188, XLAT: 189, XOR: 190, GRP1B: 191,
- GRP1W: 192, GRP1SW: 193, GRP2B: 194, GRP2W: 195, GRP2B1: 196, GRP2W1: 197, GRP2BC: 198, GRP2WC: 199,
- GRP3B: 200, GRP3W: 201, GRP4B: 202, GRP4W: 203, OP0F: 204, GRP6: 205, GRP7: 206
+ NONE: 0, AAA: 1, AAD: 2, AAM: 3, AAS: 4, ADC: 5, ADD: 6, AND: 7,
+ ARPL: 8, ASIZE: 9, BOUND: 10, BSF: 11, BSR: 12, BT: 13, BTC: 14, BTR: 15,
+ BTS: 16, CALL: 17, CBW: 18, CLC: 19, CLD: 20, CLI: 21, CLTS: 22, CMC: 23,
+ CMP: 24, CMPSB: 25, CMPSW: 26, CS: 27, CWD: 28, DAA: 29, DAS: 30, DEC: 31,
+ DIV: 32, DS: 33, ENTER: 34, ES: 35, ESC: 36, FADD: 37, FBLD: 38, FBSTP: 39,
+ FCOM: 40, FCOMP: 41, FDIV: 42, FDIVR: 43, FIADD: 44, FICOM: 45, FICOMP: 46, FIDIV: 47,
+ FIDIVR: 48, FILD: 49, FIMUL: 50, FIST: 51, FISTP: 52, FISUB: 53, FISUBR: 54, FLD: 55,
+ FLDCW: 56, FLDENV: 57, FMUL: 58, FNSAVE: 59, FNSTCW: 60, FNSTENV:61, FNSTSW: 62, FRSTOR: 63,
+ FS: 64, FST: 65, FSTP: 66, FSUB: 67, FSUBR: 68, GBP: 69, GS: 70, HLT: 71,
+ IDIV: 72, IMUL: 73, IN: 74, INC: 75, INS: 76, INT: 77, INT3: 78, INTO: 79,
+ IRET: 80, JBE: 81, JC: 82, JCXZ: 83, JG: 84, JGE: 85, JL: 86, JLE: 87,
+ JMP: 88, JNBE: 89, JNC: 90, JNO: 91, JNP: 92, JNS: 93, JNZ: 94, JO: 95,
+ JP: 96, JS: 97, JZ: 98, LAHF: 99, LAR: 100, LDS: 101, LEA: 102, LEAVE: 103,
+ LES: 104, LFS: 105, LGDT: 106, LGS: 107, LIDT: 108, LLDT: 109, LMSW: 110, LOADALL:111,
+ LOCK: 112, LODSB: 113, LODSW: 114, LOOP: 115, LOOPNZ: 116, LOOPZ: 117, LSL: 118, LSS: 119,
+ LTR: 120, MOV: 121, MOVSB: 122, MOVSW: 123, MOVSX: 124, MOVZX: 125, MUL: 126, NEG: 127,
+ NOP: 128, NOT: 129, OR: 130, OSIZE: 131, OUT: 132, OUTS: 133, POP: 134, POPA: 135,
+ POPF: 136, PUSH: 137, PUSHA: 138, PUSHF: 139, RCL: 140, RCR: 141, REPNZ: 142, REPZ: 143,
+ RET: 144, RETF: 145, ROL: 146, ROR: 147, SAHF: 148, SAR: 149, SBB: 150, SCASB: 151,
+ SCASW: 152, SETBE: 153, SETC: 154, SETG: 155, SETGE: 156, SETL: 157, SETLE: 158, SETNBE: 159,
+ SETNC: 160, SETNO: 161, SETNP: 162, SETNS: 163, SETNZ: 164, SETO: 165, SETP: 166, SETS: 167,
+ SETZ: 168, SGDT: 169, SHL: 170, SHLD: 171, SHR: 172, SHRD: 173, SIDT: 174, SLDT: 175,
+ SMSW: 176, SS: 177, STC: 178, STD: 179, STI: 180, STOSB: 181, STOSW: 182, STR: 183,
+ SUB: 184, TEST: 185, VERR: 186, VERW: 187, WAIT: 188, XCHG: 189, XLAT: 190, XOR: 191,
+ GRP1B: 192, GRP1W: 193, GRP1SW: 194, GRP2B: 195, GRP2W: 196, GRP2B1: 197, GRP2W1: 198, GRP2BC: 199,
+ GRP2WC: 200, GRP3B: 201, GRP3W: 202, GRP4B: 203, GRP4W: 204, OP0F: 205, GRP6: 206, GRP7: 207
};
/*
* Instruction names, indexed by instruction ordinal (above)
*/
Debugger.asIns = [
- "DB", "AAA", "AAD", "AAM", "AAS", "ADC", "ADD", "AND",
- "ARPL", "AS:", "BOUND", "BSF", "BSR", "BT", "BTC", "BTR",
- "BTS", "CALL", "CBW", "CLC", "CLD", "CLI", "CLTS", "CMC",
- "CMP", "CMPSB", "CMPSW", "CS:", "CWD", "DAA", "DAS", "DEC",
- "DIV", "DS:", "ENTER", "ES:", "ESC", "FADD", "FBLD", "FBSTP",
- "FCOM", "FCOMP", "FDIV", "FDIVR", "FIADD", "FICOM", "FICOMP", "FIDIV",
- "FIDIVR", "FILD", "FIMUL", "FIST", "FISTP", "FISUB", "FISUBR", "FLD",
- "FLDCW", "FLDENV", "FMUL", "FNSAVE", "FNSTCW", "FNSTENV", "FNSTSW", "FRSTOR",
- "FS:", "FST", "FSTP", "FSUB", "FSUBR", "GBP", "GS:", "HLT",
- "IDIV", "IMUL", "IN", "INC", "INS", "INT", "INT3", "INTO",
- "IRET", "JBE", "JC", "JCXZ", "JG", "JGE", "JL", "JLE",
- "JMP", "JNBE", "JNC", "JNO", "JNP", "JNS", "JNZ", "JO",
- "JP", "JS", "JZ", "LAHF", "LAR", "LDS", "LEA", "LEAVE",
- "LES", "LFS", "LGDT", "LGS", "LIDT", "LLDT", "LMSW", "LOCK",
- "LODSB", "LODSW", "LOOP", "LOOPNZ", "LOOPZ", "LSL", "LSS", "LTR",
- "MOV", "MOVSB", "MOVSW", "MOVSX", "MOVZX", "MUL", "NEG", "NOP",
- "NOT", "OR", "OS:", "OUT", "OUTS", "POP", "POPA", "POPF",
- "PUSH", "PUSHA", "PUSHF", "RCL", "RCR", "REPNZ", "REPZ", "RET",
- "RETF", "ROL", "ROR", "SAHF", "SAR", "SBB", "SCASB", "SCASW",
- "SETBE", "SETC", "SETG", "SETGE", "SETL", "SETLE", "SETNBE", "SETNC",
- "SETNO", "SETNP", "SETNS", "SETNZ", "SETO", "SETP", "SETS", "SETZ",
- "SGDT", "SHL", "SHLD", "SHR", "SHRD", "SIDT", "SLDT", "SMSW",
- "SS:", "STC", "STD", "STI", "STOSB", "STOSW", "STR", "SUB",
- "TEST", "VERR", "VERW", "WAIT", "XCHG", "XLAT", "XOR"
+ "DB", "AAA", "AAD", "AAM", "AAS", "ADC", "ADD", "AND",
+ "ARPL", "AS:", "BOUND", "BSF", "BSR", "BT", "BTC", "BTR",
+ "BTS", "CALL", "CBW", "CLC", "CLD", "CLI", "CLTS", "CMC",
+ "CMP", "CMPSB", "CMPSW", "CS:", "CWD", "DAA", "DAS", "DEC",
+ "DIV", "DS:", "ENTER", "ES:", "ESC", "FADD", "FBLD", "FBSTP",
+ "FCOM", "FCOMP", "FDIV", "FDIVR", "FIADD", "FICOM", "FICOMP", "FIDIV",
+ "FIDIVR", "FILD", "FIMUL", "FIST", "FISTP", "FISUB", "FISUBR", "FLD",
+ "FLDCW", "FLDENV", "FMUL", "FNSAVE", "FNSTCW", "FNSTENV","FNSTSW", "FRSTOR",
+ "FS:", "FST", "FSTP", "FSUB", "FSUBR", "GBP", "GS:", "HLT",
+ "IDIV", "IMUL", "IN", "INC", "INS", "INT", "INT3", "INTO",
+ "IRET", "JBE", "JC", "JCXZ", "JG", "JGE", "JL", "JLE",
+ "JMP", "JNBE", "JNC", "JNO", "JNP", "JNS", "JNZ", "JO",
+ "JP", "JS", "JZ", "LAHF", "LAR", "LDS", "LEA", "LEAVE",
+ "LES", "LFS", "LGDT", "LGS", "LIDT", "LLDT", "LMSW", "LOADALL",
+ "LOCK", "LODSB", "LODSW", "LOOP", "LOOPNZ", "LOOPZ", "LSL", "LSS",
+ "LTR", "MOV", "MOVSB", "MOVSW", "MOVSX", "MOVZX", "MUL", "NEG",
+ "NOP", "NOT", "OR", "OS:", "OUT", "OUTS", "POP", "POPA",
+ "POPF", "PUSH", "PUSHA", "PUSHF", "RCL", "RCR", "REPNZ", "REPZ",
+ "RET", "RETF", "ROL", "ROR", "SAHF", "SAR", "SBB", "SCASB",
+ "SCASW", "SETBE", "SETC", "SETG", "SETGE", "SETL", "SETLE", "SETNBE",
+ "SETNC", "SETNO", "SETNP", "SETNS", "SETNZ", "SETO", "SETP", "SETS",
+ "SETZ", "SGDT", "SHL", "SHLD", "SHR", "SHRD", "SIDT", "SLDT",
+ "SMSW", "SS:", "STC", "STD", "STI", "STOSB", "STOSW", "STR",
+ "SUB", "TEST", "VERR", "VERW", "WAIT", "XCHG", "XLAT", "XOR"
];
Debugger.CPU_86 = 0;
@@ -524,7 +524,7 @@ if (DEBUGGER) {
*
* On the 8086, it functioned as POP CS
* On the 80186, it generated an illegal opcode (UD_FAULT) exception
- * On the 80286, it introduced a series of new (and growing) two-byte opcodes
+ * On the 80286, it introduced a new (and growing) series of two-byte opcodes
*
* Based on the active CPU model, we make every effort to execute and disassemble this (and every other)
* opcode appropriately, by setting the opcode's entry in aaOpDescs accordingly. 0x0F defaults to the 8086
@@ -840,10 +840,11 @@ if (DEBUGGER) {
];
Debugger.aaOp0FDescs = {
- 0x00: [Debugger.INS.GRP6, Debugger.TYPE_MODRM | Debugger.TYPE_WORD | Debugger.TYPE_BOTH],
- 0x01: [Debugger.INS.GRP7, Debugger.TYPE_MODRM | Debugger.TYPE_WORD | Debugger.TYPE_BOTH],
- 0x02: [Debugger.INS.LAR, Debugger.TYPE_REG | Debugger.TYPE_WORD | Debugger.TYPE_IN | Debugger.TYPE_286, Debugger.TYPE_MEM | Debugger.TYPE_WORD | Debugger.TYPE_IN],
- 0x03: [Debugger.INS.LSL, Debugger.TYPE_REG | Debugger.TYPE_WORD | Debugger.TYPE_IN | Debugger.TYPE_286, Debugger.TYPE_MEM | Debugger.TYPE_WORD | Debugger.TYPE_IN]
+ 0x00: [Debugger.INS.GRP6, Debugger.TYPE_MODRM | Debugger.TYPE_WORD | Debugger.TYPE_BOTH],
+ 0x01: [Debugger.INS.GRP7, Debugger.TYPE_MODRM | Debugger.TYPE_WORD | Debugger.TYPE_BOTH],
+ 0x02: [Debugger.INS.LAR, Debugger.TYPE_REG | Debugger.TYPE_WORD | Debugger.TYPE_IN | Debugger.TYPE_286, Debugger.TYPE_MEM | Debugger.TYPE_WORD | Debugger.TYPE_IN],
+ 0x03: [Debugger.INS.LSL, Debugger.TYPE_REG | Debugger.TYPE_WORD | Debugger.TYPE_IN | Debugger.TYPE_286, Debugger.TYPE_MEM | Debugger.TYPE_WORD | Debugger.TYPE_IN],
+ 0x05: [Debugger.INS.LOADALL, Debugger.TYPE_286]
};
Debugger.aaGrpDescs = [
@@ -1778,8 +1779,8 @@ if (DEBUGGER) {
* it here, so that if the CPU is reset while running, we can prevent stop()
* from unnecessarily dumping the CPU state.
*/
- if (this.fRunning !== undefined && !fQuiet) this.println("reset");
- this.fRunning = false;
+ if (this.aFlags.fRunning !== undefined && !fQuiet) this.println("reset");
+ this.aFlags.fRunning = false;
this.clearTempBreakpoint();
if (!fQuiet) this.updateStatus();
};
@@ -1845,7 +1846,7 @@ if (DEBUGGER) {
Debugger.prototype.start = function(ms, nCycles)
{
if (!this.fProcStep) this.println("running");
- this.fRunning = true;
+ this.aFlags.fRunning = true;
this.msStart = ms;
this.nCyclesStart = nCycles;
};
@@ -1861,8 +1862,8 @@ if (DEBUGGER) {
*/
Debugger.prototype.stop = function(ms, nCycles)
{
- if (this.fRunning) {
- this.fRunning = false;
+ if (this.aFlags.fRunning) {
+ this.aFlags.fRunning = false;
this.nCycles = nCycles - this.nCyclesStart;
if (!this.fProcStep) {
var sStopped = "stopped";
@@ -2565,11 +2566,11 @@ if (DEBUGGER) {
sLine += " ";
sLine = sLine.substr(0, 50);
sLine += ";";
- if (!this.cpu.fChecksum) {
+ if (!this.cpu.aFlags.fChecksum) {
sLine += sComment + (nSequence != null? '=' + nSequence.toString() : "");
} else {
var nCycles = this.cpu.getCycles();
- sLine += "cycles=" + nCycles.toString() + " cs=" + str.toHex(this.cpu.nChecksum);
+ sLine += "cycles=" + nCycles.toString() + " cs=" + str.toHex(this.cpu.aCounts.nChecksum);
}
}
return sLine;
@@ -3495,7 +3496,7 @@ if (DEBUGGER) {
break;
}
}
- s += ",dpl" + ((seg.acc >> X86.DESC.ACC.LEVEL.SHIFT) & X86.DESC.ACC.LEVEL.MASK);
+ s += ",dpl" + ((seg.acc >> X86.DESC.ACC.DPL.SHIFT) & X86.DESC.ACC.DPL.MASK);
s += (seg.acc & X86.DESC.ACC.PRESENT)? ",present" : ",not present";
} else {
// We must be in real-mode, where selectors have no access bytes
@@ -3618,7 +3619,7 @@ if (DEBUGGER) {
*/
Debugger.prototype.doHalt = function(sCount)
{
- if (this.fRunning && sCount === undefined) {
+ if (this.aFlags.fRunning && sCount === undefined) {
this.haltCPU();
return;
}
@@ -3713,11 +3714,11 @@ if (DEBUGGER) {
} while (cLines && i != this.iTraceBuffer);
if (!sDump) sDump = "nothing to dump";
this.println(sDump);
- this.println("msPerYield: " + this.cpu.msPerYield);
- this.println("nCyclesPerBurst: " + this.cpu.nCyclesPerBurst);
- this.println("nCyclesPerYield: " + this.cpu.nCyclesPerYield);
- this.println("nCyclesPerVideoUpdate: " + this.cpu.nCyclesPerVideoUpdate);
- this.println("nCyclesPerStatusUpdate: " + this.cpu.nCyclesPerStatusUpdate);
+ this.println("msPerYield: " + this.cpu.aCounts.msPerYield);
+ this.println("nCyclesPerBurst: " + this.cpu.aCounts.nCyclesPerBurst);
+ this.println("nCyclesPerYield: " + this.cpu.aCounts.nCyclesPerYield);
+ this.println("nCyclesPerVideoUpdate: " + this.cpu.aCounts.nCyclesPerVideoUpdate);
+ this.println("nCyclesPerStatusUpdate: " + this.cpu.aCounts.nCyclesPerStatusUpdate);
} else {
var fEnable = (sEnable == "on");
for (var prop in this.traceEnabled) {
@@ -3980,13 +3981,13 @@ if (DEBUGGER) {
}
switch (asArgs[2]) {
case "int":
- this.cpu.nCyclesChecksumInterval = nCycles;
+ this.cpu.aCounts.nCyclesChecksumInterval = nCycles;
break;
case "start":
- this.cpu.nCyclesChecksumStart = nCycles;
+ this.cpu.aCounts.nCyclesChecksumStart = nCycles;
break;
case "stop":
- this.cpu.nCyclesChecksumStop = nCycles;
+ this.cpu.aCounts.nCyclesChecksumStop = nCycles;
break;
default:
this.println("unknown cs option");
@@ -3995,7 +3996,7 @@ if (DEBUGGER) {
if (nCycles !== undefined) {
this.cpu.resetChecksum();
}
- this.println("checksums " + (this.cpu.fChecksum? "enabled" : "disabled"));
+ this.println("checksums " + (this.cpu.aFlags.fChecksum? "enabled" : "disabled"));
break;
case "sp":
if (asArgs[2] !== undefined) {
@@ -4533,7 +4534,7 @@ if (DEBUGGER) {
if (this.cmp) this.cmp.reset();
return true;
case "ver":
- this.println((APPNAME || "PCjs") + " version " + APPVERSION + " (" + (COMPILED? "release" : (DEBUG? "debug" : "nodebug")) + (PREFETCH? ",prefetch" : "") + (TYPEDARRAYS? ",typedarrays" : (FATARRAYS? ",fatarrays" : "")) + ")");
+ this.println((APPNAME || "PCjs") + " version " + APPVERSION + " (" + (COMPILED? "release" : (DEBUG? "debug" : "nodebug")) + (PREFETCH? ",prefetch" : ",noprefetch") + (EAFUNCS? "eafuncs" : ",eatests") + (TYPEDARRAYS? ",typedarrays" : (FATARRAYS? ",fatarrays" : ",dwords")) + ")");
return true;
default:
ch0 = sCmd.charAt(0);
diff --git a/my_modules/pcjs-client/lib/defines.js b/my_modules/pcjs-client/lib/defines.js
index 92123af86..62a8aef20 100644
--- a/my_modules/pcjs-client/lib/defines.js
+++ b/my_modules/pcjs-client/lib/defines.js
@@ -64,7 +64,7 @@ var DEBUGGER = true; // this @define is overridden by the Closure Com
* @define {boolean}
*
* PREFETCH enables the use of a prefetch queue.
- *
+ *
* See the Bus component for details.
*/
var PREFETCH = false;
@@ -72,27 +72,21 @@ var PREFETCH = false;
/**
* @define {boolean}
*
- * FASTDISABLE turns on memory-function switching to dynamically disable memory accesses whenever the CPU wants
- * to disable spurious memory reads (which are mostly harmless) or stale memory writes (which tend to be destructive
- * and are NOT mostly harmless).
- *
- * If FASTDISABLE is false, then the code falls back to setting/testing internal OP_NOREAD and OP_NOWRITE opFlags
- * as needed.
- *
- * At the moment, it seems that FASTDISABLE is a bit slower than relying on the OP_NOREAD/OP_NOWRITE flags, so it's
- * turned off; apparently, I was a bit too optimistic calling it "FAST". But your mileage may vary, depending on the
- * browser and its version.
+ * EAFUNCS enables dynamic function switching whenever the CPU needs to disable one or both EA (Effective Address)
+ * memory functions for an instruction that doesn't observe the normal "read/modify/write" behavior. The goal is to
+ * avoid useless memory reads (which are mostly harmless) and stale memory writes (which are mostly destructive).
*
- * See the X86CPU component for details, since it is the CPU, not the underlying Bus or Memory components, that needs
- * to be able to do this.
+ * If EAFUNCS is false, then the CPU falls back to setting/testing internal OP_NOREAD and OP_NOWRITE opFlags
+ * as needed. At the moment, it seems that "EAFUNCS mode" is a bit slower than "EATESTS mode", which relies on the
+ * bits in opFlags, so EAFUNCS is turned off; however, your mileage may vary, depending on the browser and its vintage.
*/
-var FASTDISABLE = false;
+var EAFUNCS = false;
/**
* @define {boolean}
*
- * FATARRAYS is a Closure Compiler compile-time option that allocates 1 number per byte for Memory blocks;
- * wasteful, but potentially slightly faster.
+ * FATARRAYS is a Closure Compiler compile-time option that allocates a normal Array of numbers for each Memory block,
+ * where each a number represents ONE byte; very wasteful, but potentially slightly faster.
*
* See the Memory component for details.
*/
@@ -100,16 +94,14 @@ var FATARRAYS = false;
/**
* @define {boolean}
- *
- * TYPEDARRAYS enables use of typed arrays for Memory blocks. This used to be a compile-time-only option, but since I've
- * added memory access functions for typed arrays (see Memory.afnTypedArray), I can turn the support on dynamically now.
- * Originally, I didn't see much of a speed increase over the original (non-typed) implementation, but that will probably
- * change over time.
+ *
+ * TYPEDARRAYS enables use of typed arrays for Memory blocks. This used to be a compile-time-only option, but I've
+ * added memory access functions for typed arrays (see Memory.afnTypedArray), so the support CAN be enabled dynamically.
+ *
+ * However, TYPEDARRAYS has always been slightly slower than the original DWORDS implementation (which uses a normal Array
+ * of numbers that stores 32 bits, or 4 consecutive bytes, per number), so TYPEDARRAYS is completely disabled for now.
*
* See the Memory component for details.
- *
- * UPDATE (Oct 2014): Time has passed, and TypedArray support is still measurably slower than the default Memory implementation,
- * so it's turned off by default for now.
*/
var TYPEDARRAYS = false; // (typeof ArrayBuffer !== 'undefined');
@@ -117,7 +109,7 @@ if (typeof module !== 'undefined') {
global.PCJSCLASS = PCJSCLASS;
global.DEBUGGER = DEBUGGER;
global.PREFETCH = PREFETCH;
- global.FASTDISABLE = FASTDISABLE;
+ global.EAFUNCS = EAFUNCS;
global.FATARRAYS = FATARRAYS;
global.TYPEDARRAYS = TYPEDARRAYS;
/*
diff --git a/my_modules/pcjs-client/lib/disk.js b/my_modules/pcjs-client/lib/disk.js
index fac3abc5e..2f54b078d 100644
--- a/my_modules/pcjs-client/lib/disk.js
+++ b/my_modules/pcjs-client/lib/disk.js
@@ -578,7 +578,7 @@ Disk.prototype.doneLoad = function(sDiskFile, sDiskData, nErrorCode, sDiskPath)
{
var disk = null;
this.fWriteProtected = false;
- var fPrintOnly = (nErrorCode < 0 && this.cmp && !this.cmp.fPowered);
+ var fPrintOnly = (nErrorCode < 0 && this.cmp && !this.cmp.aFlags.fPowered);
if (this.fOnDemand) {
if (!nErrorCode) {
diff --git a/my_modules/pcjs-client/lib/keyboard.js b/my_modules/pcjs-client/lib/keyboard.js
index 9649eba8f..3d5c23932 100644
--- a/my_modules/pcjs-client/lib/keyboard.js
+++ b/my_modules/pcjs-client/lib/keyboard.js
@@ -939,8 +939,8 @@ Keyboard.prototype.calcReleaseDelay = function(fRepeat)
* handler, otherwise doing things like pressing ENTER repeatedly will result in sluggish behavior
* (because you can generally press/release/repress keys faster than they will auto-repeat).
*/
- var msDelay = (fRepeat ? this.msReleaseRepeat : this.msReleaseDelay);
- if (this.cpu && this.cpu.mhz) msDelay /= this.cpu.mhz;
+ var msDelay = (fRepeat? this.msReleaseRepeat : this.msReleaseDelay);
+ if (this.cpu && this.cpu.aCounts.mhz) msDelay /= this.cpu.aCounts.mhz;
return msDelay;
};
diff --git a/my_modules/pcjs-client/lib/nodebugger.js b/my_modules/pcjs-client/lib/nodebugger.js
index d3bbe8b12..1d02794bc 100644
--- a/my_modules/pcjs-client/lib/nodebugger.js
+++ b/my_modules/pcjs-client/lib/nodebugger.js
@@ -38,9 +38,14 @@
* nearly all of debugger.js will be conditionally removed by the compiler, reducing it to little more than a
* "type skeleton", which also solves some type-related warnings we would otherwise have if we tried to remove
* debugger.js from the compilation process altogether.
- *
+ *
* However, when we're in "development mode" and running uncompiled code in debugger-less configurations,
* I would still like to skip loading debugger.js altogether. To do that, we must arrange for an additional file,
* nodebugger.js, to be loaded as early as possible, which must explicitly UPDATE the value of DEBUGGER to *false*.
*/
DEBUGGER = false;
+
+/*
+ * We still need a Debugger "stub" object, so that attempts to reference Debugger constants won't trigger exceptions.
+ */
+var Debugger = {};
diff --git a/my_modules/pcjs-client/lib/video.js b/my_modules/pcjs-client/lib/video.js
index 01edb4705..d4f507f1f 100644
--- a/my_modules/pcjs-client/lib/video.js
+++ b/my_modules/pcjs-client/lib/video.js
@@ -3820,9 +3820,9 @@ Video.prototype.updateChar = function(col, row, data, context)
Video.prototype.updateScreen = function(fForce)
{
/*
- * The Computer component maintains an fPowered setting on our behalf, so we use it.
+ * The Computer component maintains the fPowered setting on our behalf, so we use it.
*/
- if (!this.fPowered) return;
+ if (!this.aFlags.fPowered) return;
/*
* If the card's video signal is disabled (eg, during a mode change), then skip the update,
diff --git a/my_modules/pcjs-client/lib/x86.js b/my_modules/pcjs-client/lib/x86.js
index 0c7c5dbd5..a731d4ed4 100644
--- a/my_modules/pcjs-client/lib/x86.js
+++ b/my_modules/pcjs-client/lib/x86.js
@@ -75,7 +75,7 @@ var X86 = {
SET: 0xfff0 // on the 80286, these are always set (TODO: Verify)
},
SEL: {
- LEVEL: 0x0003, // selector privilege level (0-3)
+ RPL: 0x0003, // requested privilege level (0-3)
LDT: 0x0004, // table indicator (0: GDT, 1: LDT)
MASK: 0xfff8 // table index
},
@@ -91,37 +91,48 @@ var X86 = {
BASE1623: 0x00ff,
MASK: 0xff00,
TYPE: {
- MASK: 0x1f00,
- SEG: 0x1000,
+ MASK: 0x1f00,
+ SEG: 0x1000,
+ NONSEG: 0x0f00,
/*
- * The rest of these apply only when SEG is set
+ * The following bits apply only when SEG is set
*/
- ACCESSED: 0x0100,
- READABLE: 0x0200, // CODE: set if readable, clear if execute-only
- WRITEABLE: 0x0200, // DATA: set if writable, clear if read-only
- CONFORMING: 0x0400, // CODE: set if conforming, clear if not
- EXPDOWN: 0x0400, // DATA: set if expand-down, clear if not
- CODE: 0x0800, // set for CODE, clear for DATA
- CODE_READABLE: 0x0A00, // both CODE and READABLE
- CODE_CONFORMING: 0x0C00, // both CODE and CONFORMING
- CODE_CONFORMING_READABLE: 0x0E00, // all of CODE and CONFORMING and READABLE
+ CODE: 0x0800, // set for CODE, clear for DATA
+ ACCESSED: 0x0100, // set if accessed, clear if not accessed
+ READABLE: 0x0200, // CODE: set if readable, clear if exec-only
+ WRITEABLE: 0x0200, // DATA: set if writable, clear if read-only
+ CONFORMING: 0x0400, // CODE: set if conforming, clear if not
+ EXPDOWN: 0x0400, // DATA: set if expand-down, clear if not
/*
- * The rest of these apply only when SEG is clear
+ * The following are all the possible (valid) types (well, except for the variations
+ * of DATA and CODE where the ACCESSED bit (0x0100) may also be set)
*/
- TSS: 0x0100,
- LDT: 0x0200,
- TSS_LDT: 0x0300,
- TSS_BUSY: 0x0300,
- GATE_CALL: 0x0400,
- GATE_TASK: 0x0500,
- GATE_INT: 0x0600,
- GATE_TRAP: 0x0700
+ TSS: 0x0100,
+ LDT: 0x0200,
+ TSS_LDT: 0x0300,
+ TSS_BUSY: 0x0300,
+ GATE_CALL: 0x0400,
+ GATE_TASK: 0x0500,
+ GATE_INT: 0x0600,
+ GATE_TRAP: 0x0700,
+ DATA_READONLY: 0x1000,
+ DATA_WRITEABLE: 0x1200,
+ DATA_EXPDOWN_READONLY: 0x1400,
+ DATA_EXPDOWN_WRITEABLE: 0x1600,
+ CODE_EXECONLY: 0x1800,
+ CODE_READABLE: 0x1a00,
+ CODE_CONFORMING_EXECONLY: 0x1c00,
+ CODE_CONFORMING_READABLE: 0x1e00
},
- LEVEL: {
+ DPL: {
MASK: 0x6000,
SHIFT: 13
},
PRESENT: 0x8000
+ },
+ EXT: { // descriptor extension word (reserved on the 80286; "must be zero")
+ OFFSET: 0x6,
+ MASK: 0xffff
}
},
/*
diff --git a/my_modules/pcjs-client/lib/x86cpu.js b/my_modules/pcjs-client/lib/x86cpu.js
index d345eb10f..6dc7e31ff 100644
--- a/my_modules/pcjs-client/lib/x86cpu.js
+++ b/my_modules/pcjs-client/lib/x86cpu.js
@@ -143,14 +143,14 @@ function X86CPU(parmsCPU) {
* stepCPU() call, but it's good form to do so.
*/
this.nBurstCycles = 0;
- this.fComplete = this.fDebugCheck = false;
+ this.aFlags.fComplete = this.aFlags.fDebugCheck = false;
/*
* We're just declaring aMemBlocks and associated Bus parameters here; they'll be initialized by initMemory()
* when the Bus is initialized.
*/
this.aMemBlocks = [];
- this.addrLimit = this.addrMask = this.blockShift = this.blockLimit = this.blockMask = 0;
+ this.addrMemMask = this.blockShift = this.blockLimit = this.blockMask = 0;
/*
* Establish all the default get/set functions for accessing memory; see this function for details.
@@ -467,7 +467,7 @@ X86CPU.PREFETCH.MASK = 0x7; // (X86CPU.PREFETCH.ARRAY - 1)
X86CPU.prototype.initMemory = function(aMemBlocks, addrLimit, blockShift, blockLimit, blockMask)
{
this.aMemBlocks = aMemBlocks;
- this.addrLimit = this.addrMask = addrLimit;
+ this.addrMemMask = addrLimit;
this.blockShift = blockShift;
this.blockLimit = blockLimit;
this.blockMask = blockMask;
@@ -491,7 +491,7 @@ X86CPU.prototype.initMemory = function(aMemBlocks, addrLimit, blockShift, blockL
*/
X86CPU.prototype.setAddressMask = function(addrMask)
{
- this.addrMask = addrMask;
+ this.addrMemMask = addrMask;
};
/**
@@ -727,7 +727,7 @@ X86CPU.prototype.initProcessor = function()
*/
X86CPU.prototype.reset = function()
{
- if (this.fRunning) this.haltCPU();
+ if (this.aFlags.fRunning) this.haltCPU();
this.resetRegs();
this.resetCycles();
this.clearError(); // clear any fatal error/exception that setError() may have flagged
@@ -760,9 +760,6 @@ X86CPU.prototype.reset = function()
* which takes both an offset and a segment, or setIP(), whichever is appropriate; in unusual cases where only
* segCS is changing (eg, undocumented 8086 opcodes), use setCS().
*
- * On the 80286, another "register" that mirrors segCS is nCPL: whenever CS is updated, nCPL is updated
- * with the CS selector's access level.
- *
* The other segment registers (DS, SS and ES) have similar setters (for segDS, segSS and segES), but those
* functions do not mirror any special segment:offset values in the same way that regEIP mirrors CS:IP.
*
@@ -827,7 +824,7 @@ X86CPU.prototype.resetRegs = function()
/*
* This resets the Processor Status flags (regPS), along with all the internal "result registers";
- * we've taken care to ensure that both nCPL and nIOPL are initialized before this first setPS() call.
+ * we've taken care to ensure that both segCS.cpl and nIOPL are initialized before this first setPS() call.
*/
this.setPS(0);
@@ -924,7 +921,7 @@ X86CPU.prototype.checkIntNotify = function(nInt)
}
}
}
- else if (DEBUGGER && this.fDebugCheck) {
+ else if (DEBUGGER && this.aFlags.fDebugCheck) {
/*
* Enabling MESSAGE_INT messages is one of the criteria that's also included in fDebugCheck, so for maximum
* speed, we check fDebugCheck first.
@@ -1007,10 +1004,10 @@ X86CPU.prototype.setProtMode = function(fProt)
} else {
X86Op0F.aOpGRP6 = X86Op0F.aOpGRP6Real;
}
- this.segCS.setProt(fProt);
- this.segDS.setProt(fProt);
- this.segSS.setProt(fProt);
- this.segES.setProt(fProt);
+ this.segCS.updateAccess(fProt);
+ this.segDS.updateAccess(fProt);
+ this.segSS.updateAccess(fProt);
+ this.segES.updateAccess(fProt);
};
/**
@@ -1048,7 +1045,6 @@ X86CPU.prototype.restoreProtMode = function(a)
this.segLDT.restore(a[5]);
this.segTSS.restore(a[6]);
this.nIOPL = a[7];
- this.nCPL = this.segCS.level;
this.setProtMode();
}
};
@@ -1122,7 +1118,7 @@ X86CPU.prototype.restore = function(data)
/**
* setMemoryEnabled()
*
- * Set the default EA memory access functions (enabled vs. disabled). When FASTDISABLE is true, assorted
+ * Set the default EA memory access functions (enabled vs. disabled). When EAFUNCS is true, assorted
* CPU opcode functions override the default functions whenever a CPU operation needs to temporarily disable the
* "get" of a source operand (or the "set" of a destination operand, as in the case of a CMP instruction).
*
@@ -1248,7 +1244,6 @@ X86CPU.prototype.loadIDTEntry = function(nIDT)
X86CPU.prototype.setCS = function(sel)
{
this.regEIP = this.segCS.load(sel) + this.regIP;
- this.nCPL = this.segCS.level;
this.opFlags |= this.OPFLAG_NOINTR8086;
if (PREFETCH) this.flushPrefetch(this.regEIP);
};
@@ -1330,7 +1325,6 @@ X86CPU.prototype.setCSIP = function(off, sel)
{
Component.assert((off & 0xffff) == off);
this.regEIP = this.segCS.load(sel) + (this.regIP = off);
- this.nCPL = this.segCS.level;
if (PREFETCH) this.flushPrefetch(this.regEIP);
};
@@ -1646,13 +1640,13 @@ X86CPU.prototype.setPS = function(regPS)
* Since PS.IOPL and PS.IF are part of PS.DIRECT, we need to take care of any 80286-specific checks before
* setting the PS.DIRECT bits. Specifically, PS.IOPL is unchanged if CPL > 0, and PS.IF is unchanged if CPL > IOPL.
*/
- if (!this.nCPL) {
+ if (!this.segCS.cpl) {
this.nIOPL = (regPS & X86.PS.IOPL.MASK) >> X86.PS.IOPL.SHIFT; // IOPL allowed to change
if (this.nIOPL && !(this.regMSW & X86.MSW.PE)) this.nIOPL = 0; // effective IOPL remains 0
} else {
regPS = (regPS & ~X86.PS.IOPL.MASK) | (this.regPS & X86.PS.IOPL.MASK); // IOPL not allowed to change
}
- if (this.nCPL > this.nIOPL) {
+ if (this.segCS.cpl > this.nIOPL) {
regPS = (regPS & ~X86.PS.IF) | (this.regPS & X86.PS.IF); // IF not allowed to change
}
@@ -1744,7 +1738,7 @@ X86CPU.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
*/
X86CPU.prototype.getByte = function(addr)
{
- return this.aMemBlocks[(addr & this.addrMask) >> this.blockShift].readByte(addr & this.blockLimit);
+ return this.aMemBlocks[(addr & this.addrMemMask) >> this.blockShift].readByte(addr & this.blockLimit);
};
/**
@@ -1757,7 +1751,7 @@ X86CPU.prototype.getByte = function(addr)
X86CPU.prototype.getWord = function(addr)
{
var off = addr & this.blockLimit;
- var iBlock = (addr & this.addrMask) >> this.blockShift;
+ var iBlock = (addr & this.addrMemMask) >> this.blockShift;
/*
* On the 8088, it takes 4 cycles to read the additional byte REGARDLESS whether the address is odd or even.
*
@@ -1779,7 +1773,7 @@ X86CPU.prototype.getWord = function(addr)
*/
X86CPU.prototype.setByte = function(addr, b)
{
- this.aMemBlocks[(addr & this.addrMask) >> this.blockShift].writeByte(addr & this.blockLimit, b & 0xff);
+ this.aMemBlocks[(addr & this.addrMemMask) >> this.blockShift].writeByte(addr & this.blockLimit, b & 0xff);
};
/**
@@ -1792,7 +1786,7 @@ X86CPU.prototype.setByte = function(addr, b)
X86CPU.prototype.setWord = function(addr, w)
{
var off = addr & this.blockLimit;
- var iBlock = (addr & this.addrMask) >> this.blockShift;
+ var iBlock = (addr & this.addrMemMask) >> this.blockShift;
/*
* On the 8088, it takes 4 cycles to write the additional byte REGARDLESS whether the address is odd or even.
*
@@ -1815,7 +1809,7 @@ X86CPU.prototype.setWord = function(addr, w)
* @param {number} off is a segment-relative offset
* @return {number}
*
-X86CPU.prototype.getEAByteDisabled = function(seg, off)
+X86CPU.prototype.getEAByteDisabled = function getEAByteDisabled(seg, off)
{
this.segEA = seg;
this.offEA = off;
@@ -1836,7 +1830,7 @@ X86CPU.prototype.getEAByteDisabled = function(seg, off)
* @param {number} off is a segment-relative offset
* @return {number}
*/
-X86CPU.prototype.getEAWordDisabled = function(seg, off)
+X86CPU.prototype.getEAWordDisabled = function getEAWordDisabled(seg, off)
{
this.segEA = seg;
this.offEA = off;
@@ -1855,7 +1849,7 @@ X86CPU.prototype.getEAWordDisabled = function(seg, off)
* @param {number} off is a segment-relative offset
* @return {number}
*/
-X86CPU.prototype.modEAByteDisabled = function(seg, off)
+X86CPU.prototype.modEAByteDisabled = function modEADisabled(seg, off)
{
this.segEA = seg;
this.offEA = off;
@@ -1874,7 +1868,7 @@ X86CPU.prototype.modEAWordDisabled = X86CPU.prototype.modEAByteDisabled;
* @this {X86CPU}
* @param {number} w is the word (16-bit) value to write (ignored)
*/
-X86CPU.prototype.setEAByteDisabled = function(w)
+X86CPU.prototype.setEAByteDisabled = function setEAByteDisabled(w)
{
};
@@ -1884,7 +1878,7 @@ X86CPU.prototype.setEAByteDisabled = function(w)
* @this {X86CPU}
* @param {number} w is the word (16-bit) value to write (ignored)
*/
-X86CPU.prototype.setEAWordDisabled = function(w)
+X86CPU.prototype.setEAWordDisabled = function setEAWordDisabled(w)
{
};
@@ -1896,11 +1890,11 @@ X86CPU.prototype.setEAWordDisabled = function(w)
* @param {number} off is a segment-relative offset
* @return {number} byte (8-bit) value at that address
*/
-X86CPU.prototype.getEAByteEnabled = function(seg, off)
+X86CPU.prototype.getEAByteEnabled = function getEAByteEnabled(seg, off)
{
this.segEA = seg;
this.regEA = seg.checkRead(this.offEA = off, 0);
- if (!FASTDISABLE && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
+ if (!EAFUNCS && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
return this.getByte(this.regEA);
};
@@ -1912,11 +1906,11 @@ X86CPU.prototype.getEAByteEnabled = function(seg, off)
* @param {number} off is a segment-relative offset
* @return {number} word (16-bit) value at that address
*/
-X86CPU.prototype.getEAWordEnabled = function(seg, off)
+X86CPU.prototype.getEAWordEnabled = function getEAWordEnabled(seg, off)
{
this.segEA = seg;
this.regEA = seg.checkRead(this.offEA = off, 1);
- if (!FASTDISABLE && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
+ if (!EAFUNCS && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
return this.getWord(this.regEA);
};
@@ -1928,11 +1922,11 @@ X86CPU.prototype.getEAWordEnabled = function(seg, off)
* @param {number} off is a segment-relative offset
* @return {number} byte (8-bit) value at that address
*/
-X86CPU.prototype.modEAByteEnabled = function(seg, off)
+X86CPU.prototype.modEAByteEnabled = function modEAByteEnabled(seg, off)
{
this.segEA = seg;
this.regEAWrite = this.regEA = seg.checkRead(this.offEA = off, 0);
- if (!FASTDISABLE && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
+ if (!EAFUNCS && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
return this.getByte(this.regEA);
};
@@ -1944,11 +1938,11 @@ X86CPU.prototype.modEAByteEnabled = function(seg, off)
* @param {number} off is a segment-relative offset
* @return {number} word (16-bit) value at that address
*/
-X86CPU.prototype.modEAWordEnabled = function(seg, off)
+X86CPU.prototype.modEAWordEnabled = function modEAWordEnabled(seg, off)
{
this.segEA = seg;
this.regEAWrite = this.regEA = seg.checkRead(this.offEA = off, 1);
- if (!FASTDISABLE && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
+ if (!EAFUNCS && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
return this.getWord(this.regEA);
};
@@ -1958,9 +1952,9 @@ X86CPU.prototype.modEAWordEnabled = function(seg, off)
* @this {X86CPU}
* @param {number} b is the byte (8-bit) value to write
*/
-X86CPU.prototype.setEAByteEnabled = function(b)
+X86CPU.prototype.setEAByteEnabled = function setEAByteEnabled(b)
{
- if (!FASTDISABLE && (this.opFlags & X86.OPFLAG.NOWRITE)) return;
+ if (!EAFUNCS && (this.opFlags & X86.OPFLAG.NOWRITE)) return;
this.setByte(this.segEA.checkWrite(this.offEA, 1), b);
};
@@ -1970,9 +1964,9 @@ X86CPU.prototype.setEAByteEnabled = function(b)
* @this {X86CPU}
* @param {number} w is the word (16-bit) value to write
*/
-X86CPU.prototype.setEAWordEnabled = function(w)
+X86CPU.prototype.setEAWordEnabled = function setEAWordEnabled(w)
{
- if (!FASTDISABLE && (this.opFlags & X86.OPFLAG.NOWRITE)) return;
+ if (!EAFUNCS && (this.opFlags & X86.OPFLAG.NOWRITE)) return;
this.setWord(this.segEA.checkWrite(this.offEA, 2), w);
};
@@ -2047,7 +2041,7 @@ X86CPU.prototype.setSOWord = function(seg, off, w)
*/
X86CPU.prototype.getBytePrefetch = function(addr)
{
- if (!FASTDISABLE && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
+ if (!EAFUNCS && (this.opFlags & X86.OPFLAG.NOREAD)) return 0;
var b;
if (!this.cbPrefetchQueued) {
if (MAXDEBUG) Component.assert(addr == this.addrPrefetchHead, "X86CPU.getBytePrefetch(" + str.toHex(addr) + "): invalid head address (" + str.toHex(this.addrPrefetchHead) + ")");
@@ -2059,10 +2053,10 @@ X86CPU.prototype.getBytePrefetch = function(addr)
* with side-effects we may not want, and in any case, while it seemed to improve Safari's performance slightly,
* it did nothing for the oddball Chrome performance I'm seeing with PREFETCH enabled.
*
- * b = this.aMemBlocks[(addr & this.addrMask) >> this.blockShift].readByte(addr & this.blockLimit);
+ * b = this.aMemBlocks[(addr & this.addrMemMask) >> this.blockShift].readByte(addr & this.blockLimit);
* this.nBusCycles += 4;
* this.cbPrefetchValid = 0;
- * this.addrPrefetchHead = (addr + 1) & this.addrMask;
+ * this.addrPrefetchHead = (addr + 1) & this.addrMemMask;
* return b;
*/
}
@@ -2107,10 +2101,10 @@ X86CPU.prototype.fillPrefetch = function(n)
{
while (n-- > 0 && this.cbPrefetchQueued < X86CPU.PREFETCH.QUEUE) {
var addr = this.addrPrefetchHead;
- var b = this.aMemBlocks[(addr & this.addrMask) >> this.blockShift].readByte(addr & this.blockLimit);
+ var b = this.aMemBlocks[(addr & this.addrMemMask) >> this.blockShift].readByte(addr & this.blockLimit);
this.aPrefetch[this.iPrefetchHead] = b | (addr << 8);
if (MAXDEBUG) this.messageDebugger(" fillPrefetch[" + this.iPrefetchHead + "]: " + str.toHex(addr) + ":" + str.toHexByte(b));
- this.addrPrefetchHead = (addr + 1) & this.addrMask;
+ this.addrPrefetchHead = (addr + 1) & this.addrMemMask;
this.iPrefetchHead = (this.iPrefetchHead + 1) & X86CPU.PREFETCH.MASK;
this.cbPrefetchQueued++;
/*
@@ -2443,7 +2437,7 @@ X86CPU.prototype.stepCPU = function(nMinCycles)
* Debugger is single-stepping (even when performing multiple single-steps), fRunning is never set,
* so haltCPU() would have no effect as far as the Debugger is concerned.
*/
- this.fComplete = true;
+ this.aFlags.fComplete = true;
/*
* fDebugCheck is true if we need to "check" every instruction with the Debugger. The Debugger will
@@ -2460,7 +2454,7 @@ X86CPU.prototype.stepCPU = function(nMinCycles)
* minimum number of cycles to process: one and only one instruction will execute, since every (valid)
* instruction consumes at least 1 cycle.
*/
- this.fDebugCheck = (DEBUGGER && nMinCycles && this.dbg && this.dbg.checksEnabled());
+ var fDebugCheck = this.aFlags.fDebugCheck = (DEBUGGER && nMinCycles && this.dbg && this.dbg.checksEnabled());
/*
* We move the minimum cycle count to nStepCycles (the number of cycles left to step), so that other
@@ -2542,7 +2536,7 @@ X86CPU.prototype.stepCPU = function(nMinCycles)
}
}
- if (DEBUGGER && this.fDebugCheck && this.dbg.checkInstruction(this.regEIP)) {
+ if (DEBUGGER && fDebugCheck && this.dbg.checkInstruction(this.regEIP)) {
this.haltCPU();
break;
}
@@ -2589,7 +2583,7 @@ X86CPU.prototype.stepCPU = function(nMinCycles)
} while (this.nStepCycles > 0);
- return (this.fComplete? this.nBurstCycles - this.nStepCycles : (this.fComplete === undefined? 0 : -1));
+ return (this.aFlags.fComplete? this.nBurstCycles - this.nStepCycles : (this.aFlags.fComplete === undefined? 0 : -1));
};
/**
@@ -2603,7 +2597,7 @@ X86CPU.prototype.stepCPU = function(nMinCycles)
X86CPU.prototype.messageDebugger = function(sMessage)
{
if (DEBUGGER && this.dbg) {
- if (this.dbg.messageEnabled(Debugger.MESSAGE_MEM)) {
+ if (this.dbg.messageEnabled(Debugger.MESSAGE_CPU)) {
this.dbg.message(sMessage);
}
}
diff --git a/my_modules/pcjs-client/lib/x86grps.js b/my_modules/pcjs-client/lib/x86grps.js
index d01465ff8..db5581db4 100644
--- a/my_modules/pcjs-client/lib/x86grps.js
+++ b/my_modules/pcjs-client/lib/x86grps.js
@@ -139,7 +139,7 @@ var X86Grps = {
this.resultSize = X86.RESULT.SIZE_BYTE;
this.resultValue = this.resultParitySign = dst - src;
this.nStepCycles -= (this.regEAWrite < 0? (this.regEA < 0? this.CYCLES.nOpCyclesArithRR : this.CYCLES.nOpCyclesCompareRM) : this.CYCLES.nOpCyclesArithRM);
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -242,7 +242,7 @@ var X86Grps = {
this.resultSize = X86.RESULT.SIZE_WORD;
this.resultValue = this.resultParitySign = dst - src;
this.nStepCycles -= (this.regEAWrite < 0? (this.regEA < 0? this.CYCLES.nOpCyclesArithRR : this.CYCLES.nOpCyclesCompareRM) : this.CYCLES.nOpCyclesArithRM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -654,7 +654,7 @@ var X86Grps = {
this.resultValue = this.resultParitySign = this.resultAuxOverflow = dst & src;
this.resultSize = X86.RESULT.SIZE_BYTE;
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesTestRI : this.CYCLES.nOpCyclesTestMI);
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -668,7 +668,7 @@ var X86Grps = {
this.resultValue = this.resultParitySign = this.resultAuxOverflow = dst & src;
this.resultSize = X86.RESULT.SIZE_WORD;
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesTestRI : this.CYCLES.nOpCyclesTestMI);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -744,7 +744,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('MULB', src, dst, null, this.getPS(), this.regMD16);
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesMulBR : this.CYCLES.nOpCyclesMulBM);
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -788,7 +788,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('IMULB', src, dst, null, this.getPS(), this.regMD16);
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesIMulBR : this.CYCLES.nOpCyclesIMulBM);
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -827,7 +827,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('DIVB', src, dst, null, this.getPS(), this.regMD16);
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesDivBR : this.CYCLES.nOpCyclesDivBM);
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -874,7 +874,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('IDIVB', src, dst, null, this.getPS(), this.regMD16);
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesIDivBR : this.CYCLES.nOpCyclesIDivBM);
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -905,7 +905,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('MULW', src, dst, null, this.getPS(), this.regMD16 | (this.regMD32 << 16));
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesMulWR : this.CYCLES.nOpCyclesMulWM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -950,7 +950,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('IMULW', src, dst, null, this.getPS(), this.regMD16 | (this.regMD32 << 16));
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesIMulWR : this.CYCLES.nOpCyclesIMulWM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -995,7 +995,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('DIVW', src, dst, null, this.getPS(), this.regMD16 | (this.regMD32 << 16));
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesDivWR : this.CYCLES.nOpCyclesDivWM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -1045,7 +1045,7 @@ var X86Grps = {
*/
if (DEBUG && DEBUGGER) this.traceLog('IDIVW', src, dst, null, this.getPS(), this.regMD16 | (this.regMD32 << 16));
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesIDivWR : this.CYCLES.nOpCyclesIDivWM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -1114,7 +1114,7 @@ var X86Grps = {
this.pushWord(this.regIP);
this.setIP(dst);
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesCallWR : this.CYCLES.nOpCyclesCallWM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -1131,7 +1131,7 @@ var X86Grps = {
this.pushWord(this.regIP);
this.setCSIP(dst, this.getWord(this.regEA + 2));
this.nStepCycles -= this.CYCLES.nOpCyclesCallDM;
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -1143,7 +1143,7 @@ var X86Grps = {
opGrpJMPw: function(dst, src) {
this.setIP(dst);
this.nStepCycles -= (this.regEA < 0? this.CYCLES.nOpCyclesJmpWR : this.CYCLES.nOpCyclesJmpWM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -1158,7 +1158,7 @@ var X86Grps = {
}
this.setCSIP(dst, this.getWord(this.regEA + 2));
this.nStepCycles -= this.CYCLES.nOpCyclesJmpDM;
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -1186,7 +1186,7 @@ var X86Grps = {
/*
* The PUSH is the only write that needs to occur; dst was the source operand and does not need to be rewritten.
*/
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
diff --git a/my_modules/pcjs-client/lib/x86help.js b/my_modules/pcjs-client/lib/x86help.js
index 541a49b0f..39cb00ce8 100644
--- a/my_modules/pcjs-client/lib/x86help.js
+++ b/my_modules/pcjs-client/lib/x86help.js
@@ -67,7 +67,7 @@ var X86Help = {
this.resultValue = this.resultParitySign = this.resultAuxOverflow = dst & src;
this.resultSize = X86.RESULT.SIZE_BYTE;
this.nStepCycles -= (this.regEAWrite < 0? (this.regEA < 0? this.CYCLES.nOpCyclesTestRR : this.CYCLES.nOpCyclesTestRM) : this.CYCLES.nOpCyclesTestRM);
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -80,7 +80,7 @@ var X86Help = {
this.resultValue = this.resultParitySign = this.resultAuxOverflow = dst & src;
this.resultSize = X86.RESULT.SIZE_WORD;
this.nStepCycles -= (this.regEAWrite < 0? (this.regEA < 0? this.CYCLES.nOpCyclesTestRR : this.CYCLES.nOpCyclesTestRM) : this.CYCLES.nOpCyclesTestRM);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -242,7 +242,7 @@ var X86Help = {
this.setIP(this.opEA - this.segCS.base);
X86Help.opHelpINT.call(this, X86.EXCEPTION.BOUND_ERR, null, 0);
}
- if (FASTDISABLE) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAByte = this.setEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
},
/**
@@ -253,8 +253,8 @@ var X86Help = {
*/
opHelpARPL: function(dst, src) {
this.nStepCycles -= (10 + (this.regEA < 0? 0 : 1));
- if ((dst & X86.SEL.LEVEL) < (src & X86.SEL.LEVEL)) {
- dst = (dst & ~X86.SEL.LEVEL) | (src & X86.SEL.LEVEL);
+ if ((dst & X86.SEL.RPL) < (src & X86.SEL.RPL)) {
+ dst = (dst & ~X86.SEL.RPL) | (src & X86.SEL.RPL);
this.setZF();
return dst;
}
@@ -277,7 +277,7 @@ var X86Help = {
* if we need a special check for them.
*/
if (this.segVER.load(src, true) >= 0) {
- if (this.segVER.level >= (this.segCS.sel & X86.SEL.LEVEL) && this.segVER.level >= (src & X86.SEL.LEVEL)) {
+ if (this.segVER.dpl >= this.segCS.cpl && this.segVER.dpl >= (src & X86.SEL.RPL)) {
this.setZF();
return this.segVER.acc & X86.DESC.ACC.MASK;
}
@@ -288,10 +288,13 @@ var X86Help = {
/**
* @this {X86CPU}
* @param {number} dst
- * @param {number} src
+ * @param {number} src (the selector)
* @return {number}
*/
opHelpLSL: function(dst, src) {
+ /*
+ * TODO: Is this an invalid operation if regEAWrite is set? dst is required to be a register.
+ */
this.nStepCycles -= (14 + (this.regEA < 0? 0 : 2));
/*
* Currently, segVER.load() will return an error only if the selector is beyond the bounds of the
@@ -301,8 +304,8 @@ var X86Help = {
* are there any other instructions that were, um, less explicit but also require a non-null selector?
*/
if ((src & X86.SEL.MASK) && this.segVER.load(src, true) >= 0) {
- var fConforming = ((this.segVER.acc & X86.DESC.ACC.TYPE.CODE_CONFORMING) == X86.DESC.ACC.TYPE.CODE_CONFORMING);
- if ((fConforming || this.segVER.level >= (this.segCS.sel & X86.SEL.LEVEL)) && this.segVER.level >= (src & X86.SEL.LEVEL)) {
+ var fConforming = ((this.segVER.acc & X86.DESC.ACC.TYPE.CODE_CONFORMING_EXECONLY) == X86.DESC.ACC.TYPE.CODE_CONFORMING_EXECONLY);
+ if ((fConforming || this.segVER.dpl >= this.segCS.cpl) && this.segVER.dpl >= (src & X86.SEL.RPL)) {
this.setZF();
return this.segVER.limit;
}
@@ -465,8 +468,9 @@ var X86Help = {
* @this {X86CPU}
* @param {number} nFault
* @param {number} [nError]
+ * @param {boolean} [fHalt] will halt the CPU if true *and* a Debugger is loaded
*/
- opHelpFault: function(nFault, nError) {
+ opHelpFault: function(nFault, nError, fHalt) {
if (DEBUGGER && this.dbg) {
/*
* NOTE: By using Debugger.message(), we have the option of setting "m halt on" and halting on messages like this.
@@ -474,6 +478,7 @@ var X86Help = {
if (this.dbg.messageEnabled(Debugger.MESSAGE_CPU)) {
this.dbg.message("Fault 0x" + str.toHexByte(nFault) + (nError != null? " (0x" + str.toHexWord(nError) + ")" : "") + " on opcode 0x" + str.toHexByte(this.bus.getByteDirect(this.regEIP)) + " at " + str.toHexAddr(this.regIP, this.segCS.sel));
}
+ if (fHalt) this.haltCPU();
}
if (this.model >= X86.MODEL_80186) {
this.setIP(this.opEA - this.segCS.base);
diff --git a/my_modules/pcjs-client/lib/x86op0f.js b/my_modules/pcjs-client/lib/x86op0f.js
index 988f26841..15b3c5d66 100644
--- a/my_modules/pcjs-client/lib/x86op0f.js
+++ b/my_modules/pcjs-client/lib/x86op0f.js
@@ -48,10 +48,10 @@ var X86Op0F = {
opGRP6: function() {
var bModRM = this.getIPByte();
if ((bModRM & 0x38) < 0x10) { // possible reg values: 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38
- if (FASTDISABLE) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
}
X86Mods.aOpModsGrpWord[bModRM].call(this, X86Op0F.aOpGRP6, X86Grps.opGrpNoSrc);
- if (FASTDISABLE) { this.modEAWord = this.modEAWordEnabled; this.setEAWord = this.setEAWordEnabled; }
+ if (EAFUNCS) { this.modEAWord = this.modEAWordEnabled; this.setEAWord = this.setEAWordEnabled; }
},
/**
* @this {X86CPU}
@@ -61,10 +61,10 @@ var X86Op0F = {
opGRP7: function() {
var bModRM = this.getIPByte();
if (!(bModRM & 0x10)) {
- if (FASTDISABLE) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
}
X86Mods.aOpModsGrpWord[bModRM].call(this, X86Op0F.aOpGRP7, X86Grps.opGrpNoSrc);
- if (FASTDISABLE) { this.modEAWord = this.modEAWordEnabled; this.setEAWord = this.setEAWordEnabled; }
+ if (EAFUNCS) { this.modEAWord = this.modEAWordEnabled; this.setEAWord = this.setEAWordEnabled; }
},
/**
* @this {X86CPU}
@@ -124,6 +124,10 @@ var X86Op0F = {
* op=0x0F,0x05 (loadall)
*/
opLOADALL: function() {
+ if (this.segCS.cpl) {
+ X86Help.opHelpFault.call(this, X86.EXCEPTION.GP_FAULT, 0, true);
+ return;
+ }
X86Help.opHelpLMSW.call(this, this.getWord(0x806));
this.regDI = this.getWord(0x826);
this.regSI = this.getWord(0x828);
@@ -133,26 +137,21 @@ var X86Op0F = {
this.regDX = this.getWord(0x830);
this.regCX = this.getWord(0x832);
this.regAX = this.getWord(0x834);
- /*
- * loadDesc() is an X86Seg class method that we must use to force the specified descriptor to be loaded;
- * since the processor might still be in real-mode, we can't use normal segment register instance methods.
- */
- X86Seg.loadDesc.call(this.segES, this.getWord(0x824), 0x836);
- X86Seg.loadDesc.call(this.segCS, this.getWord(0x822), 0x83C);
- X86Seg.loadDesc.call(this.segSS, this.getWord(0x820), 0x842);
- X86Seg.loadDesc.call(this.segDS, this.getWord(0x81E), 0x848);
- this.nCPL = this.segCS.level;
+ this.segES.loadDesc6(this.getWord(0x824), 0x836);
+ this.segCS.loadDesc6(this.getWord(0x822), 0x83C);
+ this.segSS.loadDesc6(this.getWord(0x820), 0x842);
+ this.segDS.loadDesc6(this.getWord(0x81E), 0x848);
this.setPS(this.getWord(0x818));
this.setIP(this.getWord(0x81A));
/*
- * TODO: The bytes at 0x851 and 0x85D "should be zeroes", but do we rely on that, or should we load zeroes ourselves?
+ * TODO: The bytes at 0x851 and 0x85D "should be zeroes", but do we rely on that, or do we load zeros ourselves?
*/
this.addrGDT = this.getWord(0x84E) | (this.getWord(0x850) << 16);
this.addrGDTLimit = this.addrGDT + this.getWord(0x852);
- this.segLDT.loadDesc(this.getWord(0x81C), 0x854);
+ this.segLDT.loadDesc6(this.getWord(0x81C), 0x854);
this.addrIDT = this.getWord(0x85A) | (this.getWord(0x85C) << 16);
this.addrIDTLimit = this.addrIDT + this.getWord(0x85E);
- this.segTSS.loadDesc(this.getWord(0x816), 0x860);
+ this.segTSS.loadDesc6(this.getWord(0x816), 0x860);
this.nStepCycles -= 195;
},
/**
@@ -182,7 +181,7 @@ var X86Op0F = {
* @return {number}
*/
opLLDT: function(dst, src) {
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
this.segLDT.load(dst);
this.nStepCycles -= (17 + (this.regEA < 0? 0 : 2));
return dst;
@@ -194,7 +193,7 @@ var X86Op0F = {
* @return {number}
*/
opLTR: function(dst, src) {
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
this.segTSS.load(dst);
this.nStepCycles -= (17 + (this.regEA < 0? 0 : 2));
return dst;
@@ -206,7 +205,7 @@ var X86Op0F = {
* @return {number}
*/
opVERR: function(dst, src) {
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
/*
* Currently, segVER.load() will return an error only if the selector is beyond the bounds of the
* descriptor table or the descriptor is not for a segment.
@@ -224,12 +223,9 @@ var X86Op0F = {
*
* Otherwise, DPL must be greater than or equal to (have less or the same privilege as) both the
* current privilege level and the selector's RPL.
- *
- * TODO: Consider making a CPL (current privilege level) variable that tracks segCS.sel, so that we
- * don't have to mask segCS.sel every time.
*/
- if ((this.segVER.acc & X86.DESC.ACC.TYPE.CODE_CONFORMING) == X86.DESC.ACC.TYPE.CODE_CONFORMING ||
- this.segVER.level >= (this.segCS.sel & X86.SEL.LEVEL) && this.segVER.level >= (dst & X86.SEL.LEVEL)) {
+ if (this.segVER.dpl >= this.segCS.cpl && this.segVER.dpl >= (dst & X86.SEL.RPL) ||
+ (this.segVER.acc & X86.DESC.ACC.TYPE.CODE_CONFORMING_EXECONLY) == X86.DESC.ACC.TYPE.CODE_CONFORMING_EXECONLY) {
this.setZF();
return dst;
}
@@ -245,7 +241,7 @@ var X86Op0F = {
* @return {number}
*/
opVERW: function(dst, src) {
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
/*
* Currently, segVER.load() will return an error only if the selector is beyond the bounds of the
* descriptor table or the descriptor is not for a segment.
@@ -259,11 +255,8 @@ var X86Op0F = {
/*
* DPL must be greater than or equal to (have less or the same privilege as) both the current
* privilege level and the selector's RPL.
- *
- * TODO: Consider making a CPL (current privilege level) variable that tracks segCS.sel, so that we
- * don't have to mask segCS.sel every time.
*/
- if (this.segVER.level >= (this.segCS.sel & X86.SEL.LEVEL) && this.segVER.level >= (dst & X86.SEL.LEVEL)) {
+ if (this.segVER.dpl >= this.segCS.cpl && this.segVER.dpl >= (dst & X86.SEL.RPL)) {
this.setZF();
return dst;
}
@@ -371,7 +364,7 @@ var X86Op0F = {
} else {
this.addrGDT = this.getWord(this.regEA + 2) | (this.getByte(this.regEA + 4) << 16);
this.addrGDTLimit = this.addrGDT + dst;
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
this.nStepCycles -= 11;
}
return dst;
@@ -394,7 +387,7 @@ var X86Op0F = {
} else {
this.addrIDT = this.getWord(this.regEA + 2) | (this.getByte(this.regEA + 4) << 16);
this.addrIDTLimit = this.addrIDT + dst;
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
this.nStepCycles -= 12;
}
return dst;
@@ -418,7 +411,7 @@ var X86Op0F = {
opLMSW: function(dst, src) {
X86Help.opHelpLMSW.call(this, dst);
this.nStepCycles -= (this.regEA < 0? 3 : 6);
- if (FASTDISABLE) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
+ if (EAFUNCS) this.setEAWord = this.setEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOWRITE;
return dst;
}
};
diff --git a/my_modules/pcjs-client/lib/x86opxx.js b/my_modules/pcjs-client/lib/x86opxx.js
index 95c65436d..a4749b0f8 100644
--- a/my_modules/pcjs-client/lib/x86opxx.js
+++ b/my_modules/pcjs-client/lib/x86opxx.js
@@ -651,7 +651,7 @@ var X86OpXX = {
*/
opCMPmb: function() {
X86Mods.aOpModsMemByte[this.getIPByte()].call(this, X86Grps.opGrpCMPb);
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
},
/**
* @this {X86CPU}
@@ -660,7 +660,7 @@ var X86OpXX = {
*/
opCMPmw: function() {
X86Mods.aOpModsMemWord[this.getIPByte()].call(this, X86Grps.opGrpCMPw);
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -669,7 +669,7 @@ var X86OpXX = {
*/
opCMPrb: function() {
X86Mods.aOpModsRegByte[this.getIPByte()].call(this, X86Grps.opGrpCMPb);
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
},
/**
* @this {X86CPU}
@@ -678,7 +678,7 @@ var X86OpXX = {
*/
opCMPrw: function() {
X86Mods.aOpModsRegWord[this.getIPByte()].call(this, X86Grps.opGrpCMPw);
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -687,7 +687,7 @@ var X86OpXX = {
*/
opCMPALb: function() {
this.regAX = (this.regAX & ~0xff) | X86Grps.opGrpCMPb.call(this, this.regAX & 0xff, this.getIPByte());
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
/*
* In the absence of any EA calculations, opGrpCMPb() will deduct nOpCyclesArithRR, and for all CPUs through
* the 80286, we need deduct only one more cycle.
@@ -701,7 +701,7 @@ var X86OpXX = {
*/
opCMPAXw: function() {
this.regAX = X86Grps.opGrpCMPw.call(this, this.regAX, this.getIPWord());
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
/*
* In the absence of any EA calculations, opGrpCMPw() will deduct nOpCyclesArithRR, and for all CPUs through
* the 80286, we need deduct only one more cycle.
@@ -1592,7 +1592,7 @@ var X86OpXX = {
*/
opGRP1b: function() {
X86Mods.aOpModsGrpByte[this.getIPByte()].call(this, X86Grps.aOpGRP1b, this.getIPByte);
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
this.nStepCycles -= (this.regEAWrite < 0? 1 : this.CYCLES.nOpCyclesArithMID);
},
/**
@@ -1602,7 +1602,7 @@ var X86OpXX = {
*/
opGRP1w: function() {
X86Mods.aOpModsGrpWord[this.getIPByte()].call(this, X86Grps.aOpGRP1w, this.getIPWord);
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
this.nStepCycles -= (this.regEAWrite < 0? 1 : this.CYCLES.nOpCyclesArithMID);
},
/**
@@ -1612,7 +1612,7 @@ var X86OpXX = {
*/
opGRP1sw: function() {
X86Mods.aOpModsGrpWord[this.getIPByte()].call(this, X86Grps.aOpGRP1w, this.getIPDisp);
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
this.nStepCycles -= (this.regEAWrite < 0? 1 : this.CYCLES.nOpCyclesArithMID);
},
/**
@@ -1622,7 +1622,7 @@ var X86OpXX = {
*/
opTESTrb: function() {
X86Mods.aOpModsMemByte[this.getIPByte()].call(this, X86Help.opHelpTESTb);
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
},
/**
* @this {X86CPU}
@@ -1631,7 +1631,7 @@ var X86OpXX = {
*/
opTESTrw: function() {
X86Mods.aOpModsMemWord[this.getIPByte()].call(this, X86Help.opHelpTESTw);
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -1682,9 +1682,9 @@ var X86OpXX = {
/*
* Like other MOV operations, the destination does not need to be read, just written.
*/
- if (FASTDISABLE) this.modEAByte = this.modEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAByte = this.modEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
X86Mods.aOpModsMemByte[this.getIPByte()].call(this, X86Help.opHelpMOV);
- if (FASTDISABLE) this.modEAByte = this.modEAByteEnabled;
+ if (EAFUNCS) this.modEAByte = this.modEAByteEnabled;
},
/**
* @this {X86CPU}
@@ -1695,9 +1695,9 @@ var X86OpXX = {
/*
* Like other MOV operations, the destination does not need to be read, just written.
*/
- if (FASTDISABLE) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
X86Mods.aOpModsMemWord[this.getIPByte()].call(this, X86Help.opHelpMOV);
- if (FASTDISABLE) this.modEAWord = this.modEAWordEnabled;
+ if (EAFUNCS) this.modEAWord = this.modEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -1747,9 +1747,9 @@ var X86OpXX = {
/*
* Like other MOV operations, the destination does not need to be read, just written.
*/
- if (FASTDISABLE) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
X86Mods.aOpModsMemWord[bModRM].call(this, X86Help.opHelpMOVSegSrc);
- if (FASTDISABLE) this.modEAWord = this.modEAWordEnabled;
+ if (EAFUNCS) this.modEAWord = this.modEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -1757,10 +1757,10 @@ var X86OpXX = {
* op=0x8D (lea reg,rm)
*/
opLEA: function() {
- if (FASTDISABLE) this.getEAWord = this.getEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.getEAWord = this.getEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
this.segData = this.segStack = this.segZERO; // we can't have the EA calculation, if any, "polluted" by segment arithmetic
X86Mods.aOpModsRegWord[this.getIPByte()].call(this, X86Help.opHelpLEA);
- if (FASTDISABLE) this.getEAWord = this.getEAWordEnabled;
+ if (EAFUNCS) this.getEAWord = this.getEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -1858,9 +1858,9 @@ var X86OpXX = {
/*
* Like other MOV operations, the destination does not need to be read, just written.
*/
- if (FASTDISABLE) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
X86Mods.aOpModsGrpWord[this.getIPByte()].call(this, X86Grps.aOpGrpPOPw, this.popWord);
- if (FASTDISABLE) this.modEAWord = this.modEAWordEnabled;
+ if (EAFUNCS) this.modEAWord = this.modEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -2198,7 +2198,7 @@ var X86OpXX = {
this.advanceIP(((this.opPrefixes & X86.OPFLAG.SEG)? -3 : -2));
this.opFlags |= X86.OPFLAG.REPEAT;
}
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
}
},
/**
@@ -2246,7 +2246,7 @@ var X86OpXX = {
this.advanceIP(((this.opPrefixes & X86.OPFLAG.SEG)? -3 : -2));
this.opFlags |= X86.OPFLAG.REPEAT;
}
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
}
},
/**
@@ -2453,7 +2453,7 @@ var X86OpXX = {
this.advanceIP(-2); // this instruction does not support segment overrides
this.opFlags |= X86.OPFLAG.REPEAT;
}
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
}
},
/**
@@ -2493,7 +2493,7 @@ var X86OpXX = {
this.advanceIP(-2); // this instruction does not support segment overrides
this.opFlags |= X86.OPFLAG.REPEAT;
}
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
}
},
/**
@@ -2707,9 +2707,9 @@ var X86OpXX = {
/*
* Like other MOV operations, the destination does not need to be read, just written.
*/
- if (FASTDISABLE) this.modEAByte = this.modEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAByte = this.modEAByteDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
X86Mods.aOpModsGrpByte[this.getIPByte()].call(this, X86Grps.aOpGrpMOVImm, this.getIPByte);
- if (FASTDISABLE) this.modEAByte = this.modEAByteEnabled;
+ if (EAFUNCS) this.modEAByte = this.modEAByteEnabled;
},
/**
* @this {X86CPU}
@@ -2720,9 +2720,9 @@ var X86OpXX = {
/*
* Like other MOV operations, the destination does not need to be read, just written.
*/
- if (FASTDISABLE) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
+ if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
X86Mods.aOpModsGrpWord[this.getIPByte()].call(this, X86Grps.aOpGrpMOVImm, this.getIPWord);
- if (FASTDISABLE) this.modEAWord = this.modEAWordEnabled;
+ if (EAFUNCS) this.modEAWord = this.modEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -3253,7 +3253,7 @@ var X86OpXX = {
this.regMD16 = -1;
X86Mods.aOpModsGrpByte[this.getIPByte()].call(this, X86Grps.aOpGRP3b, X86Grps.opGrpNoSrc);
if (this.regMD16 >= 0) this.regAX = this.regMD16;
- if (FASTDISABLE) this.setEAByte = this.setEAByteEnabled;
+ if (EAFUNCS) this.setEAByte = this.setEAByteEnabled;
},
/**
* @this {X86CPU}
@@ -3280,7 +3280,7 @@ var X86OpXX = {
this.regAX = this.regMD16;
this.regDX = this.regMD32;
}
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
},
/**
* @this {X86CPU}
@@ -3352,7 +3352,7 @@ var X86OpXX = {
*/
opGRP4w: function() {
X86Mods.aOpModsGrpWord[this.getIPByte()].call(this, X86Grps.aOpGRP4w, X86Grps.opGrpNoSrc);
- if (FASTDISABLE) this.setEAWord = this.setEAWordEnabled;
+ if (EAFUNCS) this.setEAWord = this.setEAWordEnabled;
}
};
diff --git a/my_modules/pcjs-client/lib/x86seg.js b/my_modules/pcjs-client/lib/x86seg.js
index 188acd824..222919d9e 100644
--- a/my_modules/pcjs-client/lib/x86seg.js
+++ b/my_modules/pcjs-client/lib/x86seg.js
@@ -33,6 +33,7 @@
"use strict";
if (typeof module !== 'undefined') {
+ var str = require("../../shared/lib/strlib");
var X86 = require("./x86");
var X86Help = require("./x86help");
}
@@ -52,9 +53,11 @@ function X86Seg(cpu, sName, fProt)
this.base = 0;
this.limit = 0xffff;
this.acc = 0;
- this.level = 0;
+ this.fCode = (sName == "CS");
this.sName = sName;
- this.setProt(fProt);
+ this.cpl = 0;
+ this.dpl = 0;
+ this.updateAccess(fProt);
}
/*
@@ -67,7 +70,7 @@ function X86Seg(cpu, sName, fProt)
* This is the default real-mode load() function.
*
* @this {X86Seg}
- * @param {number} sel containing a selector
+ * @param {number} sel
* @param {boolean} [fSuppress] is true to suppress any errors
* @return {number} base address of selected segment, or -1 if error
*/
@@ -75,7 +78,7 @@ X86Seg.loadReal = function loadReal(sel, fSuppress)
{
this.sel = sel;
this.limit = 0xffff; // TODO: Consider NOT setting the limit field in real-mode (unless it's required for, say, LOADALL support?)
- this.level = 0;
+ this.cpl = this.dpl = 0;
return this.base = sel << 4;
};
@@ -96,7 +99,7 @@ X86Seg.loadReal = function loadReal(sel, fSuppress)
* See X86.DESC for offset and bit definitions.
*
* @this {X86Seg}
- * @param {number} sel containing a selector
+ * @param {number} sel
* @param {boolean} [fSuppress] is true to suppress any errors
* @return {number} base address of selected segment, or -1 if error
*/
@@ -111,70 +114,21 @@ X86Seg.loadProt = function loadProt(sel, fSuppress)
addrDT = this.cpu.segLDT.base;
addrDTLimit = this.cpu.segLDT.limit;
}
- var offDesc = addrDT + (sel & X86.SEL.MASK);
- if (offDesc + 7 <= addrDTLimit) {
+ var addrDesc = addrDT + (sel & X86.SEL.MASK);
+ if (addrDesc + 7 <= addrDTLimit) {
/*
* TODO: This is only the first of many steps toward accurately counting cycles in protected mode;
* I simply noted that "POP segreg" takes 5 cycles in real mode and 20 in protected mode, so I'm
* starting with a 15-cycle difference. Obviously the difference will be much greater when the load fails.
*/
this.cpu.nStepCycles -= 15;
- return X86Seg.loadDesc.call(this, sel, offDesc, true);
+ return this.loadDesc8(sel, addrDesc);
}
return -1;
};
/**
- * loadDesc(sel, offDesc, fProt)
- *
- * @this {X86Seg}
- * @param {number} sel containing a selector
- * @param {number} offDesc is the physical address of a descriptor
- * @param {boolean} [fProt] is true if protected-mode, false if real-mode, undefined if TBD
- * @return {number} base address of selected segment, or -1 if error
- */
-X86Seg.loadDesc = function(sel, offDesc, fProt)
-{
- var limit = this.cpu.getWord(offDesc + X86.DESC.LIMIT.OFFSET);
- var acc = this.cpu.getWord(offDesc + X86.DESC.ACC.OFFSET);
- var base = this.cpu.getWord(offDesc + X86.DESC.BASE.OFFSET) | ((acc & X86.DESC.ACC.BASE1623) << 16);
-
- Component.assert(this.cpu.getWord(offDesc + 0x06) == 0);
-
- fProt = this.setProt(fProt);
-
- /*
- * For LSL (which uses fSuppress), we must support X86.DESC.ACC.TYPE.SEG as well as TSS and LDT.
- */
- var accType = (acc & X86.DESC.ACC.TYPE.MASK);
-
- if (accType & X86.DESC.ACC.TYPE.SEG) {
- if (fProt) {
- if ((accType & X86.DESC.ACC.TYPE.CODE_READABLE) == X86.DESC.ACC.TYPE.CODE) {
- this.checkWrite = X86Seg.checkReadProtDisabled;
- }
- if ((accType & X86.DESC.ACC.TYPE.CODE) || !(accType & X86.DESC.ACC.TYPE.WRITEABLE)) {
- this.checkWrite = X86Seg.checkWriteProtDisabled;
- }
- }
- this.sel = sel;
- this.limit = limit;
- this.acc = acc;
- this.level = (acc & X86.DESC.ACC.LEVEL.MASK) >> X86.DESC.ACC.LEVEL.SHIFT;
- return this.base = base;
- }
- else if (accType && accType <= X86.DESC.ACC.TYPE.TSS_BUSY) {
- this.sel = sel;
- this.limit = limit;
- this.acc = acc;
- this.level = (acc & X86.DESC.ACC.LEVEL.MASK) >> X86.DESC.ACC.LEVEL.SHIFT;
- return this.base = base;
- }
- return -1;
-};
-
-/**
- * checkReadReal(off, cb)
+ * checkReadReal(off, cb, fSuppress)
*
* TODO: Invoke X86Help.opHelpFault.call(this.cpu, X86.EXCEPTION.GP_FAULT) if off is 0xffff and cb is 1;
* also, whether or not the opHelpFault() call should include an error code, since this is happening in real-mode.
@@ -191,7 +145,7 @@ X86Seg.checkReadReal = function checkReadReal(off, cb, fSuppress)
};
/**
- * checkWriteReal(off, cb)
+ * checkWriteReal(off, cb, fSuppress)
*
* TODO: Invoke X86Help.opHelpFault.call(this.cpu, X86.EXCEPTION.GP_FAULT) if off is 0xffff and cb is 1;
* also, whether or not the opHelpFault() call should include an error code, since this is happening in real-mode.
@@ -208,7 +162,7 @@ X86Seg.checkWriteReal = function checkWriteReal(off, cb, fSuppress)
};
/**
- * checkReadProtEnabled(off, cb)
+ * checkReadProtEnabled(off, cb, fSuppress)
*
* @this {X86Seg}
* @param {number} off is a segment-relative offset
@@ -225,7 +179,7 @@ X86Seg.checkReadProtEnabled = function checkReadProtEnabled(off, cb, fSuppress)
};
/**
- * checkReadProtDisabled(off, cb)
+ * checkReadProtDisabled(off, cb, fSuppress)
*
* @this {X86Seg}
* @param {number} off is a segment-relative offset
@@ -242,7 +196,7 @@ X86Seg.checkReadProtDisabled = function checkReadProtDisabled(off, cb, fSuppress
};
/**
- * checkWriteProtEnabled(off, cb)
+ * checkWriteProtEnabled(off, cb, fSuppress)
*
* @this {X86Seg}
* @param {number} off is a segment-relative offset
@@ -259,7 +213,7 @@ X86Seg.checkWriteProtEnabled = function checkWriteProtEnabled(off, cb, fSuppress
};
/**
- * checkWriteProtDisabled(off, cb)
+ * checkWriteProtDisabled(off, cb, fSuppress)
*
* @this {X86Seg}
* @param {number} off is a segment-relative offset
@@ -280,40 +234,88 @@ X86Seg.checkWriteProtDisabled = function checkWriteProtDisabled(off, cb, fSuppre
*/
/**
- * save()
+ * loadDesc6(sel, addrDesc)
*
- * Early versions of PCjs saved only segment selectors, since that's all that mattered in real-mode;
- * newer versions need to save/restore the entire segment object.
+ * Used to load a protected-mode selector that refers to a 6-byte descriptor "cache" (LOADALL) entry:
+ *
+ * word 0: base address low
+ * word 1: base address high (0-7), segment type (8-11), descriptor type (12), DPL (13-14), present bit (15)
+ * word 2: segment limit (0-15)
*
* @this {X86Seg}
- * @return {Array}
+ * @param {number} sel is the selector
+ * @param {number} addrDesc is the offset
+ * @return {number} base address of selected segment, or -1 if error
*/
-X86Seg.prototype.save = function()
+X86Seg.prototype.loadDesc6 = function(sel, addrDesc)
{
- return [this.sel, this.base, this.limit, this.acc, this.level, this.sName];
+ var acc = this.cpu.getWord(addrDesc + 2);
+ var base = this.cpu.getWord(addrDesc + 0) | ((acc & 0xff) << 16);
+ var limit = this.cpu.getWord(addrDesc + 4);
+
+ if (DEBUG) {
+ this.cpu.messageDebugger("loadDesc6(" + this.sName + "): base=" + str.toHex(base) + " limit=" + str.toHexWord(limit) + " acc=" + str.toHexWord(acc));
+ }
+
+ this.sel = sel;
+ this.base = base;
+ this.limit = limit;
+ this.acc = acc & X86.DESC.ACC.MASK;
+ this.updateAccess();
+
+ return base;
};
/**
- * restore(a)
+ * loadDesc8(sel, addrDesc)
*
- * Early versions of PCjs saved only segment selectors, since that's all that mattered in real-mode;
- * newer versions need to save/restore the entire segment object.
+ * Used to load a protected-mode selector that refers to an 8-byte descriptor table (GDT, LDT, IDT) entry:
+ *
+ * word 0: segment limit (0-15)
+ * word 1: base address low
+ * word 2: base address high (0-7), segment type (8-11), descriptor type (12), DPL (13-14), present bit (15)
+ * word 3: used only on 80386 and up (should be set to zero for upward compatibility)
+ *
+ * See X86.DESC for offset and bit definitions.
*
* @this {X86Seg}
- * @param {Array|number} a
+ * @param {number} sel is the selector
+ * @param {number} addrDesc is the offset
+ * @return {number} base address of selected segment, or -1 if error
*/
-X86Seg.prototype.restore = function(a)
+X86Seg.prototype.loadDesc8 = function(sel, addrDesc)
{
- if (typeof a == "number") {
- this.load(a);
- } else {
- this.sel = a[0];
- this.base = a[1];
- this.limit = a[2];
- this.acc = a[3];
- this.level = a[4];
- this.sName = a[5];
+ var limit = this.cpu.getWord(addrDesc + X86.DESC.LIMIT.OFFSET);
+ var acc = this.cpu.getWord(addrDesc + X86.DESC.ACC.OFFSET);
+ var base = this.cpu.getWord(addrDesc + X86.DESC.BASE.OFFSET) | ((acc & X86.DESC.ACC.BASE1623) << 16);
+ var ext = (DEBUG? this.cpu.getWord(addrDesc + X86.DESC.EXT.OFFSET) : 0);
+
+ if (DEBUG) {
+ this.cpu.messageDebugger("loadDesc8(" + this.sName + "): base=" + str.toHex(base) + " limit=" + str.toHexWord(limit) + " acc=" + str.toHexWord(acc) + (ext? " ext=" + str.toHexWord(ext) : ""));
+ Component.assert(!ext);
}
+
+ /*
+ * For LSL (which uses fSuppress), we must support X86.DESC.ACC.TYPE.SEG as well as TSS and LDT.
+ */
+ var accType;
+ if ((acc & X86.DESC.ACC.TYPE.SEG) || (accType = (acc & X86.DESC.ACC.TYPE.MASK)) && accType <= X86.DESC.ACC.TYPE.TSS_BUSY) {
+ this.sel = sel;
+ this.base = base;
+ this.limit = limit;
+ /*
+ * Note that bits 0-7 of acc will usually contain the BASE1623 bits from the descriptor entry,
+ * but it doesn't matter, because the only acc bits we pay attention to are bits 8-15; however,
+ * to keep things tidy, we zero bits 0-7. Perhaps we'll find other (internal) uses for those bits.
+ */
+ this.acc = acc & X86.DESC.ACC.MASK;
+ this.type = acc & X86.DESC.ACC.TYPE.MASK;
+ this.updateAccess();
+ }
+ else {
+ base = -1;
+ }
+ return base;
};
/**
@@ -333,16 +335,55 @@ X86Seg.prototype.setBase = function(addr)
};
/**
- * setProt(fProt)
+ * save()
*
- * This must be used to ensure that the segment register's state (ie, load and check methods) matches
- * the current operating mode (real or protected).
+ * Early versions of PCjs saved only segment selectors, since that's all that mattered in real-mode;
+ * newer versions need to save/restore the entire segment object.
*
* @this {X86Seg}
- * @param {boolean} [fProt]
+ * @return {Array}
+ */
+X86Seg.prototype.save = function()
+{
+ return [this.sel, this.base, this.limit, this.acc, this.fCode, this.sName, this.cpl, this.dpl];
+};
+
+/**
+ * restore(a)
+ *
+ * Early versions of PCjs saved only segment selectors, since that's all that mattered in real-mode;
+ * newer versions need to save/restore the entire segment object.
+ *
+ * @this {X86Seg}
+ * @param {Array|number} a
+ */
+X86Seg.prototype.restore = function(a)
+{
+ if (typeof a == "number") {
+ this.load(a);
+ } else {
+ this.sel = a[0];
+ this.base = a[1];
+ this.limit = a[2];
+ this.acc = a[3];
+ this.fCode = a[4];
+ this.sName = a[5];
+ this.cpl = a[6];
+ this.dpl = a[7];
+ }
+};
+
+/**
+ * updateAccess(fProt)
+ *
+ * Ensures that the segment register's access (ie, load and check methods) matches the specified (or current)
+ * operating mode (real or protected).
+ *
+ * @this {X86Seg}
+ * @param {boolean} [fProt] true for protected-mode access, false for real-mode access, undefined for current mode
* @return {boolean}
*/
-X86Seg.prototype.setProt = function(fProt)
+X86Seg.prototype.updateAccess = function(fProt)
{
if (fProt === undefined) {
fProt = !!(this.cpu.regMSW & X86.MSW.PE);
@@ -351,10 +392,27 @@ X86Seg.prototype.setProt = function(fProt)
this.load = X86Seg.loadProt;
this.checkRead = X86Seg.checkReadProtEnabled;
this.checkWrite = X86Seg.checkWriteProtEnabled;
+ if (this.acc & X86.DESC.ACC.TYPE.SEG) {
+ /*
+ * If the READABLE bit of CODE_READABLE is not set, then disallow reads
+ */
+ if ((this.acc & X86.DESC.ACC.TYPE.CODE_READABLE) == X86.DESC.ACC.TYPE.CODE_EXECONLY) {
+ this.checkWrite = X86Seg.checkReadProtDisabled;
+ }
+ /*
+ * If the CODE bit is set, or the the WRITEABLE bit is not set, then disallow writes
+ */
+ if ((this.acc & X86.DESC.ACC.TYPE.CODE) || !(this.acc & X86.DESC.ACC.TYPE.WRITEABLE)) {
+ this.checkWrite = X86Seg.checkWriteProtDisabled;
+ }
+ }
+ this.cpl = this.sel & X86.SEL.RPL;
+ this.dpl = (this.acc & X86.DESC.ACC.DPL.MASK) >> X86.DESC.ACC.DPL.SHIFT;
} else {
this.load = X86Seg.loadReal;
this.checkRead = X86Seg.checkReadReal;
this.checkWrite = X86Seg.checkWriteReal;
+ this.cpl = this.dpl = 0;
}
return fProt;
};
diff --git a/my_modules/pcjs-client/templates/components.xsl b/my_modules/pcjs-client/templates/components.xsl
index 9e02af93a..a037373ef 100644
--- a/my_modules/pcjs-client/templates/components.xsl
+++ b/my_modules/pcjs-client/templates/components.xsl
@@ -9,7 +9,7 @@
pc
pcjs
- 1.0.0
+ 1.x.x
www.pcjs.org
diff --git a/my_modules/shared/lib/component.js b/my_modules/shared/lib/component.js
index 3fff57e2d..cd6463a35 100644
--- a/my_modules/shared/lib/component.js
+++ b/my_modules/shared/lib/component.js
@@ -46,7 +46,7 @@
* It's not that I'm trying to write "portable JavaScript", but some of this code was ported from C code
* I'd written about 14 years earlier, and portability is good, so I see no reason to rewrite code to make
* it less portable.
- *
+ *
* UPDATE: I've since switched to JSHint, which seems to have more reasonable defaults.
*/
@@ -62,7 +62,7 @@ if (typeof module !== 'undefined') {
/**
* Component(type, parms, constructor)
- *
+ *
* @constructor
* @param {string} type
* @param {Object} [parms]
@@ -83,7 +83,7 @@ if (typeof module !== 'undefined') {
function Component(type, parms, constructor)
{
this.type = type;
-
+
if (!parms) {
parms = {'id': "", 'name': ""};
}
@@ -110,19 +110,23 @@ function Component(type, parms, constructor)
this[type] = constructor;
/*
- * TODO: Decide how to reintegrate this code into the components that still want it....
+ * TODO: Decide how to reintegrate this code into the components that still want it....
*
if (this.initStep) this.initStep(parms);
*/
-
+ this.aFlags = {
+ fReady: false,
+ fBusy: false,
+ fBusyCancel: false,
+ fPowered: false,
+ fError: false
+ };
+
this.fnReady = null;
- this.fReady = false;
- this.fBusy = this.fBusyCancel = false;
- this.fPowered = false;
this.clearError();
this.bindings = {};
this.dbg = null; // by default, no connection to a Debugger
-
+
this.getMachineNum(); // once again, make the function appear used
Component.add(this);
@@ -139,10 +143,10 @@ Component.parmsURL = web.getURLParameters();
/**
* Component.inherit(p)
- *
+ *
* Returns a newly created object that inherits properties from the prototype object p.
* It uses the ECMAScript 5 function Object.create() if it is defined, and otherwise falls back to an older technique.
- *
+ *
* See: Flanagan, David (2011-04-18). JavaScript: The Definitive Guide: The Definitive Guide (Kindle Locations 9854-9903). OReilly Media - A. Kindle Edition (Example 6-1)
*
* @param {Object} p
@@ -167,10 +171,10 @@ Component.inherit = function(p)
/**
* Component.extend(o, p)
- *
+ *
* Copies the enumerable properties of p to o and returns o.
* If o and p have a property by the same name, o's property is overwritten.
- *
+ *
* See: Flanagan, David (2011-04-18). JavaScript: The Definitive Guide: The Definitive Guide (Kindle Locations 9854-9903). OReilly Media - A. Kindle Edition (Example 6-2)
*
* @param {Object} o
@@ -221,7 +225,7 @@ Component.all = [];
/**
* Component.add(component)
- *
+ *
* @param {Component} component
*/
Component.add = function(component)
@@ -236,7 +240,7 @@ Component.add = function(component)
/**
* Component.log(s, type)
- *
+ *
* For diagnostic output only.
*
* @param {string} [s] is the message text
@@ -258,7 +262,7 @@ Component.log = function(s, type)
/**
* Component.assert(f, s)
- *
+ *
* Used to verify conditions that must be true (for DEBUG builds only; compiled builds should automatically have all
* references to Component.assert() removed).
*
@@ -281,9 +285,9 @@ Component.assert = function(f, s)
/**
* Component.println(s, type, id)
- *
+ *
* For non-diagnostic messages, which components may override to control the destination/appearance of their output.
- *
+ *
* Components that inherit from this class should use the instance method, this.println(), rather than Component.println(),
* because if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the class
* method would improperly affect any other machines loaded on the same page).
@@ -301,7 +305,7 @@ Component.println = function(s, type, id)
/**
* Component.notice(s, fPrintOnly, id)
- *
+ *
* notice() is like println() but implies a need for user notification, so we alert() as well.
*
* @param {string} s is the message text
@@ -318,7 +322,7 @@ Component.notice = function(s, fPrintOnly, id)
/**
* Component.warning(s)
- *
+ *
* @param {string} s describes the warning
*/
Component.warning = function(s)
@@ -331,7 +335,7 @@ Component.warning = function(s)
/**
* Component.error(s)
- *
+ *
* @param {string} s describes the error; an alert() is displayed as well
*/
Component.error = function(s)
@@ -344,7 +348,7 @@ Component.error = function(s)
/**
* Component.getComponents(idRelated)
- *
+ *
* We could store components as properties of an 'all' object, using the component's ID,
* and change this linear lookup into a property lookup, but some components may have no ID.
*
@@ -357,7 +361,7 @@ Component.getComponents = function(idRelated)
var aComponents = [];
/*
* getComponentByID(id, idRelated)
- *
+ *
* If idRelated is provided, we check it for a machine prefix, and use any
* existing prefix to constrain matches to IDs with the same prefix, in order to
* avoid matching components belonging to other machines.
@@ -379,7 +383,7 @@ Component.getComponents = function(idRelated)
/**
* Component.getComponentByID(id, idRelated)
- *
+ *
* We could store components as properties of an 'all' object, using the component's ID,
* and change this linear lookup into a property lookup, but some components may have no ID.
*
@@ -411,7 +415,7 @@ Component.getComponentByID = function(id, idRelated)
/**
* Component.getComponentByType(sType, idRelated, componentPrev)
- *
+ *
* @param {string} sType of the desired component
* @param {string} [idRelated] of related component
* @param {Component} [componentPrev] of previously returned component, if any
@@ -449,7 +453,7 @@ Component.getComponentByType = function(sType, idRelated, componentPrev)
/**
* Component.getComponentParms(element)
- *
+ *
* @param {Object} element from the DOM
*/
Component.getComponentParms = function(element)
@@ -476,7 +480,7 @@ Component.getComponentParms = function(element)
/**
* Component.bindExternalControl(component, sControl, sBinding, sType)
- *
+ *
* @param {Component} component
* @param {string} sControl
* @param {string} sBinding
@@ -498,7 +502,7 @@ Component.bindExternalControl = function(component, sControl, sBinding, sType)
/**
* Component.bindComponentControls(component, element, sAppClass)
- *
+ *
* @param {Component} component
* @param {Object} element from the DOM
* @param {string} sAppClass
@@ -544,9 +548,9 @@ Component.bindComponentControls = function(component, element, sAppClass)
/**
* Component.getElementsByClass(element, sClass, sObjClass)
- *
+ *
* This is a cross-browser helper function, since not all browser's support getElementsByClassName()
- *
+ *
* TODO: This should probably be moved into weblib.js at some point, along with the control binding functions above,
* to keep all the browser-related code together.
*
@@ -583,7 +587,7 @@ Component.prototype = {
constructor: Component,
/**
* toString()
- *
+ *
* @this {Component}
* @return {string}
*/
@@ -592,7 +596,7 @@ Component.prototype = {
},
/**
* getMachineNum()
- *
+ *
* @this {Component}
* @return {number} unique machine number
*/
@@ -607,7 +611,7 @@ Component.prototype = {
},
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
- *
+ *
* Component's setBinding() method is intended to be overridden by subclasses.
*
* @this {Component}
@@ -661,8 +665,8 @@ Component.prototype = {
};
}(control));
/**
- * Override this.notice() with a replacement function that eliminates the web.alertUser() call
- *
+ * Override this.notice() with a replacement function that eliminates the web.alertUser() call
+ *
* @this {Component}
* @param {string} s
* @param {boolean} [fPrintOnly]
@@ -679,12 +683,12 @@ Component.prototype = {
},
/**
* log(s, type)
- *
+ *
* For diagnostic output only.
- *
+ *
* WARNING: Even though this function's body is completely wrapped in DEBUG, that won't prevent the Closure Compiler
* from including it, so all calls must still be prefixed with "if (DEBUG) ....". For this reason, the class method,
- * Component.log(), is preferred, because the compiler IS smart enough to remove those calls.
+ * Component.log(), is preferred, because the compiler IS smart enough to remove those calls.
*
* @this {Component}
* @param {string} [s] is the message text
@@ -702,7 +706,7 @@ Component.prototype = {
*
* Components using this.println() should wait until after their constructor has run to display any messages, because
* if a Control Panel has been loaded, its override will not take effect until its own constructor has run.
- *
+ *
* @this {Component}
* @param {string} [s] is the message text
* @param {string} [type] is the message type
@@ -713,7 +717,7 @@ Component.prototype = {
},
/**
* status(s)
- *
+ *
* status() is like println() but it also includes information about the component (ie, the component ID),
* which is why there is no corresponding Component.status() function.
*
@@ -724,7 +728,7 @@ Component.prototype = {
},
/**
* notice(s, fPrintOnly)
- *
+ *
* notice() is like println() but implies a need for user notification, so we alert() as well; however, if this.println()
* is overridden, this.notice will be replaced with a similar override, on the assumption that the override is taking care
* of alerting the user.
@@ -739,36 +743,36 @@ Component.prototype = {
},
/**
* setError(s)
- *
+ *
* Set a fatal error condition
*
* @this {Component}
* @param {string} s describes a fatal error condition
*/
setError: function(s) {
- this.fError = true;
+ this.aFlags.fError = true;
this.notice("Fatal error: " + s);
},
/**
* clearError()
- *
+ *
* Clear any fatal error condition
*
* @this {Component}
*/
clearError: function() {
- this.fError = false;
+ this.aFlags.fError = false;
},
/**
* isError()
- *
+ *
* Report any fatal error condition
*
* @this {Component}
* @return {boolean} true if a fatal error condition exists, false if not
*/
isError: function() {
- if (this.fError) {
+ if (this.aFlags.fError) {
this.println(this.toString() + " error");
return true;
}
@@ -776,7 +780,7 @@ Component.prototype = {
},
/**
* isReady(fnReady)
- *
+ *
* Return the "ready" state of the component; if the component is not ready, it will queue the optional
* notification function, otherwise it will immediately call the notification function, if any, without queuing it.
*
@@ -789,27 +793,27 @@ Component.prototype = {
*/
isReady: function(fnReady) {
if (fnReady) {
- if (this.fReady) {
+ if (this.aFlags.fReady) {
fnReady();
} else {
if (DEBUG) this.log("NOT ready");
this.fnReady = fnReady;
}
}
- return this.fReady;
+ return this.aFlags.fReady;
},
/**
* setReady(fReady)
- *
+ *
* Set the "ready" state of the component to true, and call any queued notification functions.
*
* @this {Component}
* @param {boolean} [fReady] is assumed to indicate "ready" unless EXPLICITLY set to false
*/
setReady: function(fReady) {
- if (!this.fError) {
- this.fReady = (fReady !== false);
- if (this.fReady) {
+ if (!this.aFlags.fError) {
+ this.aFlags.fReady = (fReady !== false);
+ if (this.aFlags.fReady) {
if (DEBUG || this.name) this.log("ready");
var fnReady = this.fnReady;
this.fnReady = null;
@@ -819,7 +823,7 @@ Component.prototype = {
},
/**
* isBusy(fCancel)
- *
+ *
* Return the "busy" state of the component
*
* @this {Component}
@@ -827,18 +831,18 @@ Component.prototype = {
* @return {boolean} true if "busy", false if not
*/
isBusy: function(fCancel) {
- if (this.fBusy) {
+ if (this.aFlags.fBusy) {
if (fCancel) {
- this.fBusyCancel = true;
+ this.aFlags.fBusyCancel = true;
} else if (fCancel === undefined) {
this.println(this.toString() + " busy");
}
}
- return this.fBusy;
+ return this.aFlags.fBusy;
},
/**
* setBusy(fBusy)
- *
+ *
* Update the current busy state; if an fCancel request is pending, it will be honored now.
*
* @this {Component}
@@ -846,19 +850,19 @@ Component.prototype = {
* @return {boolean}
*/
setBusy: function(fBusy) {
- if (this.fBusyCancel) {
- if (this.fBusy) {
- this.fBusy = false;
+ if (this.aFlags.fBusyCancel) {
+ if (this.aFlags.fBusy) {
+ this.aFlags.fBusy = false;
}
- this.fBusyCancel = false;
+ this.aFlags.fBusyCancel = false;
return false;
}
- if (this.fError) {
+ if (this.aFlags.fError) {
this.println(this.toString() + " error");
return false;
}
- this.fBusy = fBusy;
- return this.fBusy;
+ this.aFlags.fBusy = fBusy;
+ return this.aFlags.fBusy;
},
/**
* powerUp(fSave)
@@ -869,7 +873,7 @@ Component.prototype = {
* @return {boolean} true if successful, false if failure
*/
powerUp: function(data, fRepower) {
- this.fPowered = true;
+ this.aFlags.fPowered = true;
return true;
},
/**
@@ -881,7 +885,7 @@ Component.prototype = {
* @return {Object|boolean} component state if fSave; otherwise, true if successful, false if failure
*/
powerDown: function(fSave, fShutdown) {
- if (fShutdown) this.fPowered = false;
+ if (fShutdown) this.aFlags.fPowered = false;
return true;
}
};
diff --git a/versions/c1pjs/1.15.8/c1p-dbg.js b/versions/c1pjs/1.15.8/c1p-dbg.js
index 820576dfa..e23444d13 100644
--- a/versions/c1pjs/1.15.8/c1p-dbg.js
+++ b/versions/c1pjs/1.15.8/c1p-dbg.js
@@ -3,163 +3,163 @@ function s(a,b,c){var d;d=!0;var e=0,g=null,h=ba(a),k=window.XMLHttpRequest?new
function t(a){window?window.alert(a):console.log(a)}function u(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function ea(a,b,c){function d(){a-=1;0<=a&&(b()||(a=0));0=a.Ma?a.Hb:a.speed+1,!0)}}(this),a=!0}return a};
-f.V=function(a,b,c){this.a=a;this.$=b;this.rc=c-b+1;this.Ya=this.$+this.rc;this.$?t("unsupported CPU address buffer offset ("+this.$+")"):this.P()};f.ba=function(a,b){if(a&&!this.C){this.N=b;(this.m=L(b,"debugger"))&&this.m.Nf();var c=L(b,"video");c&&(this.tc=function(a){return function(){ua(a)}}(c),this.W=function(a){return function(){a.W()}}(c));this.C=!0;this.reset(!0);this.update()}};function va(a,b,c,d,e){0>wa(a.Ca,b,c,d,e)&&(a.nc>b&&(a.nc=b),a.oc=a.Ca[d][0]&&b<=a.Ca[d][1]&&a.Ca[d][3].call(a.Ca[d][2],b,c)}function N(a,b,c,d,e){0>wa(a.sa,b,c,d,e)&&(a.Lb>b&&(a.Lb=b),a.Mb=a.sa[d][0]&&b<=a.sa[d][1]&&a.sa[d][3].call(a.sa[d][2],b,c)}function wa(a,b,c,d,e){for(var g=0;ga.Hb&&a.ua&&(d=a.ua);d>a.mb&&a.speedc?c=0:a.speed==a.qd?a.ua<=a.mb&&(c=0):a.speed==a.Ma&&(c=0);a.Ac+=a.qb;return c}
-f.ya=function(){if(H(this,!0)){this.ga||(M(this),this.N&&this.N.start(),this.ga=!0,this.r.run&&(this.r.run.innerHTML="Halt"),this.W());this.Ac>=this.pb&&za(this,!0);this.qb=0;this.Vf=r();try{do{this.step(this.Wb);var a=this.va-this.F;this.Xa+=a;this.qb+=a;this.va=this.F=0;this.ob-=this.Wb;0>=this.ob&&(this.ob+=this.Jd,this.tc());this.nb-=this.Wb;0>=this.nb&&(this.nb+=this.Id,Aa(this));this.Va-=this.Wb;if(0>=this.Va){this.Va+=this.xc;break}}while(this.ga)}catch(b){this.T();this.update();H(this,!1);
-K(this,b.message);return}setTimeout(function(a){return function(){a.ya()}}(this),Ca(this))}else this.update(),this.N&&this.N.stop(this.Hd,this.Xa)};
-f.step=function(a){var b=!0;this.b=this.h=-1;var c;if(c=a)if(c=this.m)c=this.m,c=0=d.Da.length&&(d.kb=0));d=!!g}if(d){b=void 0;this.T();break}this.d++;this.t[a].call(this);if(0<=this.b){this.b>=this.nc&&this.b<=this.oc&&xa(this,this.b,this.d);if(d=c)d=this.m,e=!1,Da(d,this.b,d.Ba,"read")&&(e=!0),d=!!e;if(d){b=
-!1;this.T();break}this.b=-1}else if(0<=this.h){this.h>=this.Lb&&this.h<=this.Mb&&ya(this,this.h,this.d);if(d=c){d=this.m;var e=this.h,g=this.a[this.h],h=!1;(g&255)!=g&&(d.i("invalid value at "+p(e)+": "+g),h=!0);Da(d,e,d.Ea,"write")&&(h=!0);d=!!h}if(d){b=!1;this.T();break}this.h=-1}this.F-=this.Cf[a]}while(0>1)&128?64:0),b=b|(a.f&128?128:0);return a.w&60|b}
-function Ga(a){a.w|=8;a.t[97]=a.eg;a.t[101]=a.gg;a.t[105]=a.dg;a.t[109]=a.ag;a.t[113]=a.fg;a.t[117]=a.hg;a.t[121]=a.cg;a.t[125]=a.bg;a.t[225]=a.ui;a.t[229]=a.wi;a.t[233]=a.ti;a.t[237]=a.qi;a.t[241]=a.vi;a.t[245]=a.xi;a.t[249]=a.si;a.t[253]=a.ri}function Ha(a){a.w&=-9;a.t[97]=a.Vd;a.t[101]=a.Xd;a.t[105]=a.Ud;a.t[109]=a.Rd;a.t[113]=a.Wd;a.t[117]=a.Yd;a.t[121]=a.Td;a.t[125]=a.Sd;a.t[225]=a.ce;a.t[229]=a.ee;a.t[233]=a.be;a.t[237]=a.Zd;a.t[241]=a.de;a.t[245]=a.fe;a.t[249]=a.ae;a.t[253]=a.$d}
-function P(a,b,c){var d=a.c&256?1:0,e=(b&15)+(c&15)+d;10<=e&&(e=e+6&15|16);e+=(b&240)+(c&240);a.v=b^c;a.u=e;a.f=e&255;160<=e&&(e+=96);512<=e&&(e-=256);a.c=e;a.g=b+c+d&255;a.F--;return e&255}function Q(a,b,c){var d=a.c&256?0:1,e=(b&15)-(c&15)-d;0>e&&(e=(e-6&15)-16);e+=(b&240)-(c&240);0>e&&(e-=96);a.f=a.g=(a.c=b-c-d)&255;a.v=b^c;a.u=a.c;a.c^=256;a.F--;return e&255}function ta(a){a.e=0;a.n=0;a.p=0;a.q=256;a.w=0;a.f=0;a.g=0;a.v=0;a.u=0;a.c=0;a.d=0;a.b=-1;a.h=-1;a.ua=0;a.Xa=a.va=a.F=0}
-f.Dg=function(){this.d++;this.a[this.q--]=this.d>>8;this.q|=256;this.a[this.q--]=this.d&255;this.q|=256;this.w|=16;this.w=Ba(this);this.a[this.q--]=this.w;this.q|=256;this.w&=239;this.b=65534;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.Xh=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e|=this.a[this.b]};f.Zh=function(){this.b=this.a[this.d++];this.f=this.g=this.e|=this.a[this.b]};
-f.tg=function(){this.h=this.a[this.d++];this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.bi=function(){this.w=Ba(this);this.a[this.q--]=this.w;this.q|=256};f.Wh=function(){this.b=this.d++;this.f=this.g=this.e|=this.a[this.b]};f.sg=function(){this.c=this.e<<1;this.f=this.g=this.e=this.c&255};f.Th=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e|=this.a[this.b]};
-f.qg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.Cg=function(){this.d+=(this.f&128?0:(this.F--,this.a[this.d]<<24>>24))+1};f.Yh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.f=this.g=this.e|=this.a[this.b]};f.$h=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e|=this.a[this.b]};
-f.ug=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.Gg=function(){this.c=0};f.Vh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.f=this.g=this.e|=this.a[this.b]};f.Uh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e|=this.a[this.b]};f.rg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};
-f.uh=function(){this.b=this.d++;this.a[this.q--]=this.d>>8;this.q|=256;this.a[this.q--]=this.d&255;this.q|=256;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.mg=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e&=this.a[this.b]};f.zg=function(){this.b=this.a[this.d++];this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.u=0;this.v=this.a[this.b]&64?128:0};f.og=function(){this.b=this.a[this.d++];this.f=this.g=this.e&=this.a[this.b]};
-f.hi=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.di=function(){this.q=this.q+1&255|256;this.w=this.a[this.q];this.c=this.w&1?256:0;this.g=this.w&2?0:1;this.f=this.w&128;this.u=0;this.v=this.w&64?128:0};f.lg=function(){this.b=this.d++;this.f=this.g=this.e&=this.a[this.b]};
-f.gi=function(){this.c=this.c&65280|this.e;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.e=this.c&255};f.yg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.u=0;this.v=this.a[this.b]&64?128:0};f.ig=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e&=this.a[this.b]};
-f.ei=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.Ag=function(){this.d+=(this.f&128?(this.F--,this.a[this.d]<<24>>24):0)+1};f.ng=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.f=this.g=this.e&=this.a[this.b]};f.pg=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e&=this.a[this.b]};
-f.ii=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.yi=function(){this.c=256};f.kg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.f=this.g=this.e&=this.a[this.b]};f.jg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e&=this.a[this.b]};
-f.fi=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.oi=function(){this.q=this.q+1&255|256;this.w=this.a[this.q];this.c=this.w&1?256:0;this.g=this.w&2?0:1;this.f=this.w&128;this.u=0;this.v=this.w&64?128:0;this.q=this.q+2&255|256;this.d=this.a[this.q-1|256]|this.a[this.q]<<8};
-f.ih=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e^=this.a[this.b]};f.kh=function(){this.b=this.a[this.d++];this.f=this.g=this.e^=this.a[this.b]};f.Qh=function(){this.h=this.a[this.d++];this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};f.ai=function(){this.a[this.q--]=this.e;this.q|=256};f.hh=function(){this.b=this.d++;this.f=this.g=this.e^=this.a[this.b]};
-f.Ph=function(){this.c=this.c&65279|(this.e&1?256:0);this.e=(this.c=this.c&65280|this.e>>1)&255;this.f=this.g=this.c&255};f.th=function(){this.b=this.d;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.eh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e^=this.a[this.b]};f.Nh=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
-f.Eg=function(){this.d+=((this.u&255^this.v^this.u>>1)&128?0:(this.F--,this.a[this.d]<<24>>24))+1};f.jh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.f=this.g=this.e^=this.a[this.b]};f.lh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e^=this.a[this.b]};f.Rh=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
-f.Ig=function(){this.w&=251};f.gh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.f=this.g=this.e^=this.a[this.b]};f.fh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e^=this.a[this.b]};f.Oh=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
-f.pi=function(){this.q=this.q+2&255|256;this.d=(this.a[this.q-1|256]|this.a[this.q]<<8)+1};f.Vd=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};f.eg=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=P(this,this.e,this.a[this.b])};
-f.Xd=function(){this.b=this.a[this.d++];this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};f.gg=function(){this.b=this.a[this.d++];this.e=P(this,this.e,this.a[this.b])};f.mi=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.ci=function(){this.q=this.q+1&255|256;this.f=this.g=this.e=this.a[this.q]};
-f.Ud=function(){this.b=this.d++;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};f.dg=function(){this.b=this.d++;this.e=P(this,this.e,this.a[this.b])};f.li=function(){this.c=this.c&65280|this.e;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.e=this.c&255};f.sh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.d=this.a[this.b]|this.a[this.b+1]<<8};
-f.Rd=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};f.ag=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=P(this,this.e,this.a[this.b])};f.ji=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};
-f.Fg=function(){this.d+=((this.u&255^this.v^this.u>>1)&128?(this.F--,this.a[this.d]<<24>>24):0)+1};f.Wd=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};f.fg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.e=P(this,this.e,this.a[this.b])};
-f.Yd=function(){this.b=this.a[this.d++]+this.n&255;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};f.hg=function(){this.b=this.a[this.d++]+this.n&255;this.e=P(this,this.e,this.a[this.b])};f.ni=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.Ai=function(){this.w|=4};
-f.Td=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};f.cg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.e=P(this,this.e,this.a[this.b])};f.Sd=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255};
-f.bg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=P(this,this.e,this.a[this.b])};f.ki=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.Ei=function(){this.h=this.a[this.d++]+this.n&255;this.h=this.a[this.h]|this.a[this.h+1]<<8;this.a[this.h]=this.e};f.Mi=function(){this.h=this.a[this.d++];this.a[this.h]=this.p};
-f.Gi=function(){this.h=this.a[this.d++];this.a[this.h]=this.e};f.Ji=function(){this.h=this.a[this.d++];this.a[this.h]=this.n};f.dh=function(){this.f=this.g=this.p=this.p-1&255};f.Si=function(){this.f=this.g=this.e=this.n};f.Li=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.p};f.Bi=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.e};f.Ii=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.n};
-f.vg=function(){this.d+=(this.c&256?0:(this.F--,this.a[this.d]<<24>>24))+1};f.Fi=function(){this.h=this.a[this.d++];this.h=(this.a[this.h]|this.a[this.h+1]<<8)+this.p;this.a[this.h]=this.e};f.Ni=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.p};f.Hi=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.e};f.Ki=function(){this.h=this.a[this.d++]+this.p&255;this.a[this.h]=this.n};f.Ui=function(){this.f=this.g=this.e=this.p};
-f.Di=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.a[this.h]=this.e};f.Ti=function(){this.q=this.n|256};f.Ci=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.a[this.h]=this.e};f.Kh=function(){this.b=this.d++;this.f=this.g=this.p=this.a[this.b]};f.zh=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e=this.a[this.b]};f.Fh=function(){this.b=this.d++;this.f=this.g=this.n=this.a[this.b]};
-f.Lh=function(){this.b=this.a[this.d++];this.f=this.g=this.p=this.a[this.b]};f.Bh=function(){this.b=this.a[this.d++];this.f=this.g=this.e=this.a[this.b]};f.Gh=function(){this.b=this.a[this.d++];this.f=this.g=this.n=this.a[this.b]};f.Qi=function(){this.f=this.g=this.p=this.e};f.yh=function(){this.b=this.d++;this.f=this.g=this.e=this.a[this.b]};f.Pi=function(){this.f=this.g=this.n=this.e};f.Ih=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.p=this.a[this.b]};
-f.vh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e=this.a[this.b]};f.Dh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.n=this.a[this.b]};f.wg=function(){this.d+=(this.c&256?(this.F--,this.a[this.d]<<24>>24):0)+1};f.Ah=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.f=this.g=this.e=this.a[this.b]};f.Mh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.p=this.a[this.b]};
-f.Ch=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e=this.a[this.b]};f.Hh=function(){this.b=this.a[this.d++]+this.p&255;this.f=this.g=this.n=this.a[this.b]};f.Jg=function(){this.v=this.u=0};f.xh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.f=this.g=this.e=this.a[this.b]};f.Ri=function(){this.f=this.g=this.n=this.q&255};f.Jh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.p=this.a[this.b]};
-f.wh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e=this.a[this.b]};f.Eh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.f=this.g=this.n=this.a[this.b]};f.Wg=function(){this.b=this.d++;this.f=this.g=this.c=this.p-this.a[this.b];this.c^=256};f.Og=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
-f.Xg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.p-this.a[this.b];this.c^=256};f.Qg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.$g=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.rh=function(){this.f=this.g=this.p=this.p+1&255};f.Ng=function(){this.b=this.d++;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.bh=function(){this.f=this.g=this.n=this.n-1&255};
-f.Vg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.p-this.a[this.b];this.c^=256};f.Kg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Yg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Bg=function(){this.d+=(this.g&255?(this.F--,this.a[this.d]<<24>>24):0)+1};
-f.Pg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Rg=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.ah=function(){this.h=this.a[this.d++]+this.n&255;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Hg=function(){Ha(this)};
-f.Mg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Lg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Zg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Tg=function(){this.b=this.d++;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
-f.ce=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ui=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=Q(this,this.e,this.a[this.b])};f.Ug=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
-f.ee=function(){this.b=this.a[this.d++];this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.wi=function(){this.b=this.a[this.d++];this.e=Q(this,this.e,this.a[this.b])};f.oh=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.qh=function(){this.f=this.g=this.n=this.n+1&255};
-f.be=function(){this.b=this.d++;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ti=function(){this.b=this.d++;this.e=Q(this,this.e,this.a[this.b])};f.Sh=function(){};f.Sg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
-f.Zd=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.qi=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=Q(this,this.e,this.a[this.b])};f.mh=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.xg=function(){this.d+=(this.g&255?0:(this.F--,this.a[this.d]<<24>>24))+1};
-f.de=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.vi=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.p;this.e=Q(this,this.e,this.a[this.b])};
-f.fe=function(){this.b=this.a[this.d++]+this.n&255;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.xi=function(){this.b=this.a[this.d++]+this.n&255;this.e=Q(this,this.e,this.a[this.b])};f.ph=function(){this.h=this.a[this.d++]+this.n&255;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.zi=function(){Ga(this)};
-f.ae=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.si=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.e=Q(this,this.e,this.a[this.b])};
-f.$d=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ri=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=Q(this,this.e,this.a[this.b])};f.nh=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
-f.Oi=function(){var a;a=this.a[this.d++];switch(a){case this.wf:this.i("HALT");this.T();break;case this.pd:a=this.d;for(var b="";a=a.Na?a.Ib:a.speed+1,!0)}}(this),a=!0}return a};
+f.W=function(a,b,c){this.a=a;this.aa=b;this.sc=c-b+1;this.$a=this.aa+this.sc;this.aa?t("unsupported CPU address buffer offset ("+this.aa+")"):this.Q()};f.ca=function(a,b){if(a&&!this.o.C){this.O=b;(this.m=L(b,"debugger"))&&this.m.Of();var c=L(b,"video");c&&(this.uc=function(a){return function(){ua(a)}}(c),this.X=function(a){return function(){a.X()}}(c));this.o.C=!0;this.reset(!0);this.update()}};function va(a,b,c,d,e){0>wa(a.Da,b,c,d,e)&&(a.oc>b&&(a.oc=b),a.pc=a.Da[d][0]&&b<=a.Da[d][1]&&a.Da[d][3].call(a.Da[d][2],b,c)}function N(a,b,c,d,e){0>wa(a.ta,b,c,d,e)&&(a.Mb>b&&(a.Mb=b),a.Nb=a.ta[d][0]&&b<=a.ta[d][1]&&a.ta[d][3].call(a.ta[d][2],b,c)}function wa(a,b,c,d,e){for(var g=0;ga.Ib&&a.va&&(d=a.va);d>a.nb&&a.speedc?c=0:a.speed==a.rd?a.va<=a.nb&&(c=0):a.speed==a.Na&&(c=0);a.Bc+=a.rb;return c}
+f.za=function(){if(H(this,!0)){this.o.ha||(M(this),this.O&&this.O.start(),this.o.ha=!0,this.s.run&&(this.s.run.innerHTML="Halt"),this.X());this.Bc>=this.qb&&za(this,!0);this.rb=0;this.Wf=r();try{do{this.step(this.Xb);var a=this.wa-this.G;this.Za+=a;this.rb+=a;this.wa=this.G=0;this.pb-=this.Xb;0>=this.pb&&(this.pb+=this.Kd,this.uc());this.ob-=this.Xb;0>=this.ob&&(this.ob+=this.Jd,Aa(this));this.Xa-=this.Xb;if(0>=this.Xa){this.Xa+=this.yc;break}}while(this.o.ha)}catch(b){this.U();this.update();H(this,
+!1);K(this,b.message);return}setTimeout(function(a){return function(){a.za()}}(this),Ca(this))}else this.update(),this.O&&this.O.stop(this.Id,this.Za)};
+f.step=function(a){var b=!0;this.b=this.h=-1;var c;if(c=a)if(c=this.m)c=this.m,c=0=d.Ea.length&&(d.lb=0));d=!!g}if(d){b=void 0;this.U();break}this.d++;this.u[a].call(this);if(0<=this.b){this.b>=this.oc&&this.b<=this.pc&&xa(this,this.b,this.d);if(d=c)d=this.m,e=!1,Da(d,this.b,d.Ca,"read")&&(e=!0),d=!!e;if(d){b=
+!1;this.U();break}this.b=-1}else if(0<=this.h){this.h>=this.Mb&&this.h<=this.Nb&&ya(this,this.h,this.d);if(d=c){d=this.m;var e=this.h,g=this.a[this.h],h=!1;(g&255)!=g&&(d.i("invalid value at "+p(e)+": "+g),h=!0);Da(d,e,d.Fa,"write")&&(h=!0);d=!!h}if(d){b=!1;this.U();break}this.h=-1}this.G-=this.Df[a]}while(0>1)&128?64:0),b=b|(a.f&128?128:0);return a.A&60|b}
+function Ga(a){a.A|=8;a.u[97]=a.fg;a.u[101]=a.hg;a.u[105]=a.eg;a.u[109]=a.bg;a.u[113]=a.gg;a.u[117]=a.ig;a.u[121]=a.dg;a.u[125]=a.cg;a.u[225]=a.vi;a.u[229]=a.xi;a.u[233]=a.ui;a.u[237]=a.ri;a.u[241]=a.wi;a.u[245]=a.yi;a.u[249]=a.ti;a.u[253]=a.si}function Ha(a){a.A&=-9;a.u[97]=a.Wd;a.u[101]=a.Yd;a.u[105]=a.Vd;a.u[109]=a.Sd;a.u[113]=a.Xd;a.u[117]=a.Zd;a.u[121]=a.Ud;a.u[125]=a.Td;a.u[225]=a.de;a.u[229]=a.fe;a.u[233]=a.ce;a.u[237]=a.$d;a.u[241]=a.ee;a.u[245]=a.ge;a.u[249]=a.be;a.u[253]=a.ae}
+function P(a,b,c){var d=a.c&256?1:0,e=(b&15)+(c&15)+d;10<=e&&(e=e+6&15|16);e+=(b&240)+(c&240);a.w=b^c;a.v=e;a.f=e&255;160<=e&&(e+=96);512<=e&&(e-=256);a.c=e;a.g=b+c+d&255;a.G--;return e&255}function Q(a,b,c){var d=a.c&256?0:1,e=(b&15)-(c&15)-d;0>e&&(e=(e-6&15)-16);e+=(b&240)-(c&240);0>e&&(e-=96);a.f=a.g=(a.c=b-c-d)&255;a.w=b^c;a.v=a.c;a.c^=256;a.G--;return e&255}function ta(a){a.e=0;a.n=0;a.q=0;a.r=256;a.A=0;a.f=0;a.g=0;a.w=0;a.v=0;a.c=0;a.d=0;a.b=-1;a.h=-1;a.va=0;a.Za=a.wa=a.G=0}
+f.Eg=function(){this.d++;this.a[this.r--]=this.d>>8;this.r|=256;this.a[this.r--]=this.d&255;this.r|=256;this.A|=16;this.A=Ba(this);this.a[this.r--]=this.A;this.r|=256;this.A&=239;this.b=65534;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.Yh=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e|=this.a[this.b]};f.$h=function(){this.b=this.a[this.d++];this.f=this.g=this.e|=this.a[this.b]};
+f.ug=function(){this.h=this.a[this.d++];this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.ci=function(){this.A=Ba(this);this.a[this.r--]=this.A;this.r|=256};f.Xh=function(){this.b=this.d++;this.f=this.g=this.e|=this.a[this.b]};f.tg=function(){this.c=this.e<<1;this.f=this.g=this.e=this.c&255};f.Uh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e|=this.a[this.b]};
+f.rg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.Dg=function(){this.d+=(this.f&128?0:(this.G--,this.a[this.d]<<24>>24))+1};f.Zh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e|=this.a[this.b]};f.ai=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e|=this.a[this.b]};
+f.vg=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};f.Hg=function(){this.c=0};f.Wh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e|=this.a[this.b]};f.Vh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e|=this.a[this.b]};f.sg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};
+f.vh=function(){this.b=this.d++;this.a[this.r--]=this.d>>8;this.r|=256;this.a[this.r--]=this.d&255;this.r|=256;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.ng=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e&=this.a[this.b]};f.Ag=function(){this.b=this.a[this.d++];this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.v=0;this.w=this.a[this.b]&64?128:0};f.pg=function(){this.b=this.a[this.d++];this.f=this.g=this.e&=this.a[this.b]};
+f.ii=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.ei=function(){this.r=this.r+1&255|256;this.A=this.a[this.r];this.c=this.A&1?256:0;this.g=this.A&2?0:1;this.f=this.A&128;this.v=0;this.w=this.A&64?128:0};f.mg=function(){this.b=this.d++;this.f=this.g=this.e&=this.a[this.b]};
+f.hi=function(){this.c=this.c&65280|this.e;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.e=this.c&255};f.zg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.v=0;this.w=this.a[this.b]&64?128:0};f.jg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e&=this.a[this.b]};
+f.fi=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.Bg=function(){this.d+=(this.f&128?(this.G--,this.a[this.d]<<24>>24):0)+1};f.og=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e&=this.a[this.b]};f.qg=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e&=this.a[this.b]};
+f.ji=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.zi=function(){this.c=256};f.lg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e&=this.a[this.b]};f.kg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e&=this.a[this.b]};
+f.gi=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};f.pi=function(){this.r=this.r+1&255|256;this.A=this.a[this.r];this.c=this.A&1?256:0;this.g=this.A&2?0:1;this.f=this.A&128;this.v=0;this.w=this.A&64?128:0;this.r=this.r+2&255|256;this.d=this.a[this.r-1|256]|this.a[this.r]<<8};
+f.jh=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e^=this.a[this.b]};f.lh=function(){this.b=this.a[this.d++];this.f=this.g=this.e^=this.a[this.b]};f.Rh=function(){this.h=this.a[this.d++];this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};f.bi=function(){this.a[this.r--]=this.e;this.r|=256};f.ih=function(){this.b=this.d++;this.f=this.g=this.e^=this.a[this.b]};
+f.Qh=function(){this.c=this.c&65279|(this.e&1?256:0);this.e=(this.c=this.c&65280|this.e>>1)&255;this.f=this.g=this.c&255};f.uh=function(){this.b=this.d;this.d=this.a[this.b]|this.a[this.b+1]<<8};f.fh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e^=this.a[this.b]};f.Oh=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
+f.Fg=function(){this.d+=((this.v&255^this.w^this.v>>1)&128?0:(this.G--,this.a[this.d]<<24>>24))+1};f.kh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e^=this.a[this.b]};f.mh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e^=this.a[this.b]};f.Sh=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
+f.Jg=function(){this.A&=251};f.hh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e^=this.a[this.b]};f.gh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e^=this.a[this.b]};f.Ph=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
+f.qi=function(){this.r=this.r+2&255|256;this.d=(this.a[this.r-1|256]|this.a[this.r]<<8)+1};f.Wd=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.fg=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=P(this,this.e,this.a[this.b])};
+f.Yd=function(){this.b=this.a[this.d++];this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.hg=function(){this.b=this.a[this.d++];this.e=P(this,this.e,this.a[this.b])};f.ni=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.di=function(){this.r=this.r+1&255|256;this.f=this.g=this.e=this.a[this.r]};
+f.Vd=function(){this.b=this.d++;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.eg=function(){this.b=this.d++;this.e=P(this,this.e,this.a[this.b])};f.mi=function(){this.c=this.c&65280|this.e;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.e=this.c&255};f.th=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.d=this.a[this.b]|this.a[this.b+1]<<8};
+f.Sd=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.bg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=P(this,this.e,this.a[this.b])};f.ki=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};
+f.Gg=function(){this.d+=((this.v&255^this.w^this.v>>1)&128?(this.G--,this.a[this.d]<<24>>24):0)+1};f.Xd=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.gg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.e=P(this,this.e,this.a[this.b])};
+f.Zd=function(){this.b=this.a[this.d++]+this.n&255;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.ig=function(){this.b=this.a[this.d++]+this.n&255;this.e=P(this,this.e,this.a[this.b])};f.oi=function(){this.h=this.a[this.d++]+this.n&255;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.Bi=function(){this.A|=4};
+f.Ud=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};f.dg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.e=P(this,this.e,this.a[this.b])};f.Td=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255};
+f.cg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=P(this,this.e,this.a[this.b])};f.li=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};f.Fi=function(){this.h=this.a[this.d++]+this.n&255;this.h=this.a[this.h]|this.a[this.h+1]<<8;this.a[this.h]=this.e};f.Ni=function(){this.h=this.a[this.d++];this.a[this.h]=this.q};
+f.Hi=function(){this.h=this.a[this.d++];this.a[this.h]=this.e};f.Ki=function(){this.h=this.a[this.d++];this.a[this.h]=this.n};f.eh=function(){this.f=this.g=this.q=this.q-1&255};f.Ti=function(){this.f=this.g=this.e=this.n};f.Mi=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.q};f.Ci=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.e};f.Ji=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.n};
+f.wg=function(){this.d+=(this.c&256?0:(this.G--,this.a[this.d]<<24>>24))+1};f.Gi=function(){this.h=this.a[this.d++];this.h=(this.a[this.h]|this.a[this.h+1]<<8)+this.q;this.a[this.h]=this.e};f.Oi=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.q};f.Ii=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.e};f.Li=function(){this.h=this.a[this.d++]+this.q&255;this.a[this.h]=this.n};f.Vi=function(){this.f=this.g=this.e=this.q};
+f.Ei=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.a[this.h]=this.e};f.Ui=function(){this.r=this.n|256};f.Di=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.a[this.h]=this.e};f.Lh=function(){this.b=this.d++;this.f=this.g=this.q=this.a[this.b]};f.Ah=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e=this.a[this.b]};f.Gh=function(){this.b=this.d++;this.f=this.g=this.n=this.a[this.b]};
+f.Mh=function(){this.b=this.a[this.d++];this.f=this.g=this.q=this.a[this.b]};f.Ch=function(){this.b=this.a[this.d++];this.f=this.g=this.e=this.a[this.b]};f.Hh=function(){this.b=this.a[this.d++];this.f=this.g=this.n=this.a[this.b]};f.Ri=function(){this.f=this.g=this.q=this.e};f.zh=function(){this.b=this.d++;this.f=this.g=this.e=this.a[this.b]};f.Qi=function(){this.f=this.g=this.n=this.e};f.Jh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.q=this.a[this.b]};
+f.wh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e=this.a[this.b]};f.Eh=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.n=this.a[this.b]};f.xg=function(){this.d+=(this.c&256?(this.G--,this.a[this.d]<<24>>24):0)+1};f.Bh=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.e=this.a[this.b]};f.Nh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.q=this.a[this.b]};
+f.Dh=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.e=this.a[this.b]};f.Ih=function(){this.b=this.a[this.d++]+this.q&255;this.f=this.g=this.n=this.a[this.b]};f.Kg=function(){this.w=this.v=0};f.yh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.e=this.a[this.b]};f.Si=function(){this.f=this.g=this.n=this.r&255};f.Kh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.q=this.a[this.b]};
+f.xh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e=this.a[this.b]};f.Fh=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.n=this.a[this.b]};f.Xg=function(){this.b=this.d++;this.f=this.g=this.c=this.q-this.a[this.b];this.c^=256};f.Pg=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
+f.Yg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.q-this.a[this.b];this.c^=256};f.Rg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.ah=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.sh=function(){this.f=this.g=this.q=this.q+1&255};f.Og=function(){this.b=this.d++;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.dh=function(){this.f=this.g=this.n=this.n-1&255};
+f.Wg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.q-this.a[this.b];this.c^=256};f.Lg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Zg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Cg=function(){this.d+=(this.g&255?(this.G--,this.a[this.d]<<24>>24):0)+1};
+f.Qg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Sg=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.bh=function(){this.h=this.a[this.d++]+this.n&255;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Ig=function(){Ha(this)};
+f.Ng=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.Mg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};f.$g=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};f.Ug=function(){this.b=this.d++;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
+f.de=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.vi=function(){this.b=this.a[this.d++]+this.n&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=Q(this,this.e,this.a[this.b])};f.Vg=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
+f.fe=function(){this.b=this.a[this.d++];this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.xi=function(){this.b=this.a[this.d++];this.e=Q(this,this.e,this.a[this.b])};f.ph=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.rh=function(){this.f=this.g=this.n=this.n+1&255};
+f.ce=function(){this.b=this.d++;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ui=function(){this.b=this.d++;this.e=Q(this,this.e,this.a[this.b])};f.Th=function(){};f.Tg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};
+f.$d=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ri=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=Q(this,this.e,this.a[this.b])};f.nh=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.yg=function(){this.d+=(this.g&255?0:(this.G--,this.a[this.d]<<24>>24))+1};
+f.ee=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.wi=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.q;this.e=Q(this,this.e,this.a[this.b])};
+f.ge=function(){this.b=this.a[this.d++]+this.n&255;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.yi=function(){this.b=this.a[this.d++]+this.n&255;this.e=Q(this,this.e,this.a[this.b])};f.qh=function(){this.h=this.a[this.d++]+this.n&255;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};f.Ai=function(){Ga(this)};
+f.be=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ti=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.q;this.e=Q(this,this.e,this.a[this.b])};
+f.ae=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.v=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.si=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=Q(this,this.e,this.a[this.b])};f.oh=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
+f.Pi=function(){var a;a=this.a[this.d++];switch(a){case this.xf:this.i("HALT");this.U();break;case this.qd:a=this.d;for(var b="";a=c&&(c+=32);a.Ja=a.Ja.substr(1);Ma(a,c)}0=b&&(b+=32),Oa(a,b),U(a,b,!0,a.od)&&(a.l.speed==a.l.Ma?U(a,b,!1,a.uf):(c=!1,a.da[b]&&(clearTimeout(a.da[b]),c=!0),c=Na(a,c),a.da[a.xa=b]=setTimeout(function(a){return function(){U(a,b,!1,a.vf)}}(a),c),a.m&&T(a.m,a.m.za)&&a.m.message("keyPressSimulate("+n(b)+"): setTimeout()")),c=!0));a.m&&T(a.m,a.m.za)&&a.m.message("keyPressSimulate("+n(b)+"): "+(c?"true":"false"));return c}
-function U(a,b,c,d){var e=!1;c||(a.da[b]=null,a.xa==b&&(a.xa=0));var g=0,h=a.k[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.zb),h=a.k[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.M[b]|=1<d||d>=this.Wf}a&&(d=this.kc.shift(),void 0!==d&&(this.xd=d),this.Dc=0,this.Kd=c);for(d=c=0;8>d;d++)this.yd&1<d[g][0]&&(h=d[g][0]),k=a.Ed&&(d-=a.Ed,d=c&&(c+=32);a.Ka=a.Ka.substr(1);Ma(a,c)}0=b&&(b+=32),Oa(a,b),U(a,b,!0,a.pd)&&(a.l.speed==a.l.Na?U(a,b,!1,a.vf):(c=!1,a.ea[b]&&(clearTimeout(a.ea[b]),c=!0),c=Na(a,c),a.ea[a.ya=b]=setTimeout(function(a){return function(){U(a,b,!1,a.wf)}}(a),c),a.m&&T(a.m,a.m.Aa)&&a.m.message("keyPressSimulate("+n(b)+"): setTimeout()")),c=!0));a.m&&T(a.m,a.m.Aa)&&a.m.message("keyPressSimulate("+n(b)+"): "+(c?"true":"false"));return c}
+function U(a,b,c,d){var e=!1;c||(a.ea[b]=null,a.ya==b&&(a.ya=0));var g=0,h=a.k[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.Ab),h=a.k[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.N[b]|=1<d||d>=this.Xf}a&&(d=this.lc.shift(),void 0!==d&&(this.yd=d),this.Ec=0,this.Ld=c);for(d=c=0;8>d;d++)this.zd&1<d[g][0]&&(h=d[g][0]),k=a.Fd&&(d-=a.Fd,dMissing <canvas> support; try a new web browser.";break}e.setAttribute("class","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
-e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight));c.appendChild(e);var g=new Image,h=e.getContext("2d"),e=new Qa(d,e,h,g);g.onload=function(a){return function(){a.P()}}(e,d.charSet);g.src=d.charSet;E(e,c)}});
-function Ta(a){z.call(this,"C1PSerialPort",a);this.C=!1;this.Dd=a.demo;this.yf=0;this.xf=1;this.reset()}B(Ta);f=Ta.prototype;f.reset=function(){2!=this.Fa&&(this.Nb=this.pc=0,this.Za='10 PRINT "HELLO OSI #'+ka(this)+'"\n',this.Fa=this.Ub=0)};f.start=function(){this.G&&this.Dd&&(V(this.G," C\n\n",3E3),setTimeout(function(a){return function(){a.Fa=1;V(a.G,"LOAD\n")}}(this),12E3));this.Dd=!1};
-f.I=function(a,b,c,d){switch(c){case "listSerial":return this.r[c]=d,!0;case "loadSerial":return this.r[c]=d,d.onclick=function(a){return function(){a.r.listSerial&&s(a.r.listSerial.value,a,a.Pf)}}(this),!0}return!1};f.V=function(a,b,c,d){this.a=a;this.Fc=b;this.Ff=c-b+1;this.Qd=this.Fc+this.Ff;if(this.l=d)va(d,b,c,this,this.H),N(d,b,c,this,this.O);this.P()};f.ba=function(a,b){a&&!this.C&&(this.C=!0,this.N=b,this.G=L(b,"keyboard"),this.m=L(b,"debugger"))};
-f.Pf=function(a,b,c){b?(this.Za=b,this.Fa=this.Ub=0,this.N&&this.G&&this.l.ga?(this.i("auto-loading "+a),this.l.W(),"."!=this.Za.charAt(0)?(this.Fa=1,V(this.G,"NEW\nLOAD\n")):(this.Fa=2,this.N.reset(!0),V(this.G,"ML"))):this.i(a+" ready to load")):this.i(a+" load error ("+c+")")};f.H=function(a,b){void 0!==b&&(a&1?Ua(this):this.Za&&!this.Ub&&Ua(this))};f.O=function(a,b){void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Sc,!0)};
-function Ua(a){if(void 0!==a.Za){a.pc=0;a.Nb=0;if(a.Ub=--d.Wa&&(0=d.Od&&(d.ha=d.Od),0>d.ha&&(d.ha=0),d.Wa=20,a.Ha.update(a.Ha.s|a.jc),Ya(a))}this.s=c;a.$b.s&a.Ka&&W(a,a.nd,this)}}(a)};a.$b={s:0,aa:function(){},update:function(a){return function(c){void 0!==c&&(this.s=c&~(a.Nc|a.Oc));W(a,a.kd,this);a.sb.update();a.ie.update()}}(a)};a.Vi={s:0,aa:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Pc)==a.Pc&&(a.Ia.s=a.ud|a.sd|a.rd),this.s=c);a.Ia.update()}}(a)};a.Ia={s:a.ud|a.sd|a.rd,aa:function(){},update:function(a){return function(c){void 0===
-c&&(c=a.Ia.s);c&=~a.td;0<=a.K&&0<=a.U[a.K].Ua&&(c|=a.td);this.s=c;W(a,a.rf,this)}}(a)};a.Jc={s:0,aa:function(a){return function(){Za(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.s=c);W(a,a.ld,this)}}(a)};a.Wi={s:0,aa:function(){},update:function(){return function(){}}(a)}}
-f.I=function(a,b,c,d){switch(c){case "listDisk":return this.r[c]=d,!0;case "loadDisk":return this.r[c]=d,d.onclick=function(a){return function(){if(a.r.listDisk){var b=a.r.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.i("loading "+ba(b)+"...");s(c,a,a.Of)}}}(this),!0}return!1};f.V=function(a,b,c,d){this.a=a;this.mc=b;if(this.l=d)va(d,b,c,this,this.H),N(d,b,c,this,this.O);this.P()};
-f.ba=function(a,b){a&&!this.C&&(this.C=!0,this.m=L(b,"debugger"))};
-f.Of=function(a,b,c){if(c)this.i("disk load error ("+c+")");else{c=[];this.i("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.i("data error: "+d[0]);else if(this.U[0]){for(b=0;b=--d.Ya&&(0=d.Pd&&(d.ia=d.Pd),0>d.ia&&(d.ia=0),d.Ya=20,a.Ia.update(a.Ia.t|a.kc),Ya(a))}this.t=c;a.ac.t&a.La&&W(a,a.od,this)}}(a)};a.ac={t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c&~(a.Oc|a.Pc));W(a,a.ld,this);a.tb.update();a.je.update()}}(a)};a.Wi={t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Qc)==a.Qc&&(a.Ja.t=a.vd|a.td|a.sd),this.t=c);a.Ja.update()}}(a)};a.Ja={t:a.vd|a.td|a.sd,ba:function(){},update:function(a){return function(c){void 0===
+c&&(c=a.Ja.t);c&=~a.ud;0<=a.L&&0<=a.V[a.L].Wa&&(c|=a.ud);this.t=c;W(a,a.sf,this)}}(a)};a.Kc={t:0,ba:function(a){return function(){Za(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.t=c);W(a,a.md,this)}}(a)};a.Xi={t:0,ba:function(){},update:function(){return function(){}}(a)}}
+f.J=function(a,b,c,d){switch(c){case "listDisk":return this.s[c]=d,!0;case "loadDisk":return this.s[c]=d,d.onclick=function(a){return function(){if(a.s.listDisk){var b=a.s.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.i("loading "+ba(b)+"...");s(c,a,a.Pf)}}}(this),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.nc=b;if(this.l=d)va(d,b,c,this,this.I),N(d,b,c,this,this.P);this.Q()};
+f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.m=L(b,"debugger"))};
+f.Pf=function(a,b,c){if(c)this.i("disk load error ("+c+")");else{c=[];this.i("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.i("data error: "+d[0]);else if(this.V[0]){for(b=0;b>8&255);a.push(b&255)}function $a(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;cb?b&=3:32>b&&(b&=17);switch(b){case a.md:a=a.Zb.s&a.Ka?a.Ha:a.he;break;case a.jd:a=a.Zb;break;case a.nd:a=a.$b.s&a.Ka?a.sb:a.ie;break;case a.kd:a=a.$b;break;case a.of:a=c?a.Vi:a.Ia;break;case a.ld:a=a.Jc;break;default:a=a.Wi}return a}f.H=function(a,b){if(void 0!==b){var c=bb(this,a-this.mc,!1);this.m&&S(this.m,this,a,b,this.m.La,!1,c.je);c.aa()}};
-f.O=function(a,b){if(void 0!==b){var c=this.l.H(a),d=bb(this,a-this.mc,!0);if(this.m&&T(this.m,this.m.La|this.m.dc)&&(S(this.m,this,a,b,this.m.La,!0,d.je),d.Af))for(var e=128,g=d.s^c;g&&e;)g&e&&this.m.message(" changed "+d.je+"."+d.Af[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Xa(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.nf||(d|=2),a.Ha.s&a.dd||(d|=1));a.K!=d&&(a.K=d,a.Ia.update())}function Ya(a){0<=a.K&&(a.U[a.K].Ua=-1,a.Jc.update(255),a.Ia.update())}
-function Za(a){var b=null;if(0<=a.K){var b=a.U[a.K],c=b.Jb[b.ha];void 0!==c&&(0<=b.Ua&&b.Ua>24)}f.H=function(a){var b;a>=this.$&&a=this.Ya?this.i("invalid address: "+p(a)):(this.a[this.$+a]=b&255,ya(this.l,a),this.l.update())};function kb(a,b){Y(a.ra,b,void 0)||a.ra.push(b);return!0}
-function Y(a,b,c){for(var d=!1,e=0;eh&&(m+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.l.gc&&(h<
-a.vd.length&&(m=a.vd[h]),h==a.l.pd)){l=0;for(m='"';h=a.H(b++);)16>l?m+=String.fromCharCode(h):16==l&&(m+="\u2026"),l++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.Zf=b;return d}
-function Z(a,b){var c=a.wa;if(void 0!==b){var d=16;"$"==b.charAt(0)?b=b.substr(1):"0x"==b.substr(0,2)?b=b.substr(2):"."==b.charAt(b.length-1)&&(d=10,b=b.substr(0,b.length-1));c=parseInt(b,d);isNaN(c)&&(a.i("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c=a.Ya)&&(a.i("address out of range: "+aa(c)),c=void 0);return c}
-function nb(a,b){if("?"==b)a.i("\nfrequency commands:"),a.i("clear\tclear all frequency counts");else{var c=0,d;if(a.fa)if("clear"==b){for(d=0;db?b&=3:32>b&&(b&=17);switch(b){case a.nd:a=a.$b.t&a.La?a.Ia:a.ie;break;case a.kd:a=a.$b;break;case a.od:a=a.ac.t&a.La?a.tb:a.je;break;case a.ld:a=a.ac;break;case a.pf:a=c?a.Wi:a.Ja;break;case a.md:a=a.Kc;break;default:a=a.Xi}return a}f.I=function(a,b){if(void 0!==b){var c=bb(this,a-this.nc,!1);this.m&&S(this.m,this,a,b,this.m.Ma,!1,c.ke);c.ba()}};
+f.P=function(a,b){if(void 0!==b){var c=this.l.I(a),d=bb(this,a-this.nc,!0);if(this.m&&T(this.m,this.m.Ma|this.m.ec)&&(S(this.m,this,a,b,this.m.Ma,!0,d.ke),d.Bf))for(var e=128,g=d.t^c;g&&e;)g&e&&this.m.message(" changed "+d.ke+"."+d.Bf[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Xa(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.of||(d|=2),a.Ia.t&a.ed||(d|=1));a.L!=d&&(a.L=d,a.Ja.update())}function Ya(a){0<=a.L&&(a.V[a.L].Wa=-1,a.Kc.update(255),a.Ja.update())}
+function Za(a){var b=null;if(0<=a.L){var b=a.V[a.L],c=b.Kb[b.ia];void 0!==c&&(0<=b.Wa&&b.Wa>24)}f.I=function(a){var b;a>=this.aa&&a=this.$a?this.i("invalid address: "+p(a)):(this.a[this.aa+a]=b&255,ya(this.l,a),this.l.update())};function kb(a,b){Y(a.sa,b,void 0)||a.sa.push(b);return!0}
+function Y(a,b,c){for(var d=!1,e=0;eh&&(m+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.l.hc&&(h<
+a.wd.length&&(m=a.wd[h]),h==a.l.qd)){l=0;for(m='"';h=a.I(b++);)16>l?m+=String.fromCharCode(h):16==l&&(m+="\u2026"),l++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$f=b;return d}
+function Z(a,b){var c=a.xa;if(void 0!==b){var d=16;"$"==b.charAt(0)?b=b.substr(1):"0x"==b.substr(0,2)?b=b.substr(2):"."==b.charAt(b.length-1)&&(d=10,b=b.substr(0,b.length-1));c=parseInt(b,d);isNaN(c)&&(a.i("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c=a.$a)&&(a.i("address out of range: "+aa(c)),c=void 0);return c}
+function nb(a,b){if("?"==b)a.i("\nfrequency commands:"),a.i("clear\tclear all frequency counts");else{var c=0,d;if(a.ga)if("clear"==b){for(d=0;da.Bf.indexOf(k)&&(e=a.B);e==a.Tc&&k!=a.Fb&&(e=a.B)}else a.i("unknown operand: "+l),k=-1;if(0<=k){m=-1;for(h=0;hm)m=h;else{a.i("too many instruction matches (both "+n(m)+" and "+n(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.Y[m][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.X&&(l-=c+2,-128>l||127>>=8;else g&&
-a.i("instruction missing "+g+" bytes")}else a.i("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;ck&&em?String.fromCharCode(m):".",e++;a.i(p(h)+" "+g+l)}a.wa=e}break;case "e":e=c[1];if(void 0===e)a.i("missing address");else if(e=Z(a,e),void 0!==e)for(d=2;dd.length&&(a.i("note: only "+d.length+" available"),g=d.length);
-void 0!==l&&(a.zc=0,a.i(g+" instructions earlier:"));l=a.zc?a.zc:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.kb;){h=d[c];if(0>h)break;a.i(mb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Yf=g;a.zc=l}10==e&&a.i("no history available");break;case "r":hb(a,c);break;case "s":a.H(a.l.d)==a.l.Gb?(lb(a,a.l.d+3),a.Ta=!0,a.ya()||a.l.W()):ob(a);break;case "t":ob(a,c[1]);break;case "u":gb(a,c[1],c[2],8);break;case "?":case "help":a.i("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
-a.i("note: frequency and history commands operate only when breakpoints are set");break;default:a.i("unknown command: "+b)}}}x(function(){for(var a=F(window.document,"c1pjs","debugger"),b=0;b");b&&b.ba(!0,a)}
-x(function(){for(var a=F(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===h){t(' definition must appear first in the specification');
-break}if(e=C("debugger",d.id))g["debugger"]=[e],e.V&&e.V(h,k,l,g.cpu[0]);k=new $(d,g);if(l=C("panel",d.id))if(g.panel=[l],l.sc){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;da.Cf.indexOf(k)&&(e=a.D);e==a.Uc&&k!=a.Gb&&(e=a.D)}else a.i("unknown operand: "+l),k=-1;if(0<=k){m=-1;for(h=0;hm)m=h;else{a.i("too many instruction matches (both "+n(m)+" and "+n(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.Z[m][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.Y&&(l-=c+2,-128>l||127>>=8;else g&&
+a.i("instruction missing "+g+" bytes")}else a.i("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;ck&&em?String.fromCharCode(m):".",e++;a.i(p(h)+" "+g+l)}a.xa=e}break;case "e":e=c[1];if(void 0===e)a.i("missing address");else if(e=Z(a,e),void 0!==e)for(d=2;dd.length&&(a.i("note: only "+d.length+" available"),g=d.length);
+void 0!==l&&(a.Ac=0,a.i(g+" instructions earlier:"));l=a.Ac?a.Ac:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.lb;){h=d[c];if(0>h)break;a.i(mb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Zf=g;a.Ac=l}10==e&&a.i("no history available");break;case "r":hb(a,c);break;case "s":a.I(a.l.d)==a.l.Hb?(lb(a,a.l.d+3),a.Va=!0,a.za()||a.l.X()):ob(a);break;case "t":ob(a,c[1]);break;case "u":gb(a,c[1],c[2],8);break;case "?":case "help":a.i("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
+a.i("note: frequency and history commands operate only when breakpoints are set");break;default:a.i("unknown command: "+b)}}}x(function(){for(var a=F(window.document,"c1pjs","debugger"),b=0;b");b&&b.ca(!0,a)}
+x(function(){for(var a=F(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===h){t(' definition must appear first in the specification');
+break}if(e=C("debugger",d.id))g["debugger"]=[e],e.W&&e.W(h,k,l,g.cpu[0]);k=new $(d,g);if(l=C("panel",d.id))if(g.panel=[l],l.tc){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;dk.indexOf("/")&&(k=window.location.pathname+k);a=a.replace(/(]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(k?" url=$2"+k+"$2":""))}k=null;if("<"==a.charAt(0))try{window.ActiveXObject||"ActiveXObject"in window?(e||(a=a.replace(/\s*/g,"")),k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(G){k=
null,a=G.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");s(e,null,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
diff --git a/versions/c1pjs/1.15.8/c1p.js b/versions/c1pjs/1.15.8/c1p.js
index 8d5cdbeee..f6759e5ef 100644
--- a/versions/c1pjs/1.15.8/c1p.js
+++ b/versions/c1pjs/1.15.8/c1p.js
@@ -2,124 +2,124 @@
function q(a,b,c){var d;d=!0;var f=0,g=null,k=aa(a),h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(f=h.status||-1),c&&(b?c.call(b,k,g,f,void 0):c(k,g,f,void 0)))});h.open("GET",a,d);h.send();d||(g=h.responseText,200!=h.status&&(f=h.status||-1),c&&(b?c.call(b,k,g,f,void 0):c(k,g,f,void 0)))}
function r(a){window?window.alert(a):console.log(a)}function s(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var t={init:[],show:[],exit:[]},da=!1,u=!0;function v(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function w(a){t.init.push(a)}
function x(a){if(u)try{for(var b=0;b=a.oa?a.ab:a.speed+1,!0)}}(this),a=!0}return a};
-e.P=function(a,b){this.a=a;(this.oc=b)?r("unsupported CPU address buffer offset ("+this.oc+")"):this.J()};e.S=function(a,b){if(a&&!this.A){this.G=b;var c=M(b,"video");c&&(this.kb=function(a){return function(){na(a)}}(c),this.da=function(a){return function(){a.da()}}(c));this.A=!0;this.reset(!0);this.update()}};function oa(a,b,c,d,f){0>pa(a.Y,b,c,d,f)&&(a.fb>b&&(a.fb=b),a.gbpa(a.T,b,c,d,f)&&(a.Ha>b&&(a.Ha=b),a.Iaa.ab&&a.W&&(d=a.W);d>a.Qa&&a.speed=a.ua&&qa(a,!0);a.va=0;a.Td=Date.now()||+new Date}
-function ua(a){var b=Date.now()||+new Date,c=a.Qd;a.va&&(c=Math.round(c*a.va/a.nb));c-=b-a.Td;if(b-=a.fc)a.W=Math.round(a.la/(100*b))/10,864E5<=b&&ma(a);0>c?c=0:a.speed==a.xd?a.W<=a.Qa&&(c=0):a.speed==a.oa&&(c=0);a.pb+=a.va;return c}
-function P(a){if(ja(a,!0)){a.R||(ma(a),a.G&&a.G.start(),a.R=!0,a.o.run&&(a.o.run.innerHTML="Halt"),a.da());ta(a);try{do{a.step(a.Sa);var b=a.X-a.B;a.la+=b;a.va+=b;a.X=a.B=0;a.ta-=a.Sa;0>=a.ta&&(a.ta+=a.hc,a.kb());a.sa-=a.Sa;0>=a.sa&&(a.sa+=a.gc,ra(a));a.ja-=a.Sa;if(0>=a.ja){a.ja+=a.nb;break}}while(a.R)}catch(c){O(a);a.update();ja(a,!1);K(a,c.message);return}setTimeout(function(a){return function(){P(a)}}(a),ua(a))}else a.update(),a.G&&a.G.stop(a.fc,a.la)}
-e.step=function(a){this.b=this.h=-1;this.X=this.B=a;do{a=this.a[this.d];this.d++;this.q[a].call(this);if(0<=this.b){if(this.b>=this.fb&&this.b<=this.gb)for(var b=this.b,c=this.d,d=0;d=this.Y[d][0]&&b<=this.Y[d][1]&&this.Y[d][3].call(this.Y[d][2],b,c);this.b=-1}else if(0<=this.h){if(this.h>=this.Ha&&this.h<=this.Ia)for(b=this.h,c=this.d,d=0;d=this.T[d][0]&&b<=this.T[d][1]&&this.T[d][3].call(this.T[d][2],b,c);this.h=-1}this.B-=this.Bd[a]}while(0>1)&128?64:0),b=b|(a.f&128?128:0);return a.u&60|b}
-function S(a,b,c){var d=a.c&256?1:0,f=(b&15)+(c&15)+d;10<=f&&(f=f+6&15|16);f+=(b&240)+(c&240);a.w=b^c;a.r=f;a.f=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.c=f;a.g=b+c+d&255;a.B--;return f&255}function T(a,b,c){var d=a.c&256?0:1,f=(b&15)-(c&15)-d;0>f&&(f=(f-6&15)-16);f+=(b&240)-(c&240);0>f&&(f-=96);a.f=a.g=(a.c=b-c-d)&255;a.w=b^c;a.r=a.c;a.c^=256;a.B--;return f&255}function la(a){a.e=0;a.k=0;a.m=0;a.n=256;a.u=0;a.f=0;a.g=0;a.w=0;a.r=0;a.c=0;a.d=0;a.b=-1;a.h=-1;a.W=0;a.la=a.X=a.B=0}
-e.ze=function(){this.d++;this.a[this.n--]=this.d>>8;this.n|=256;this.a[this.n--]=this.d&255;this.n|=256;this.u|=16;this.u=sa(this);this.a[this.n--]=this.u;this.n|=256;this.u&=239;this.b=65534;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.Tf=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e|=this.a[this.b]};e.Vf=function(){this.b=this.a[this.d++];this.f=this.g=this.e|=this.a[this.b]};
-e.pe=function(){this.h=this.a[this.d++];this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.Yf=function(){this.u=sa(this);this.a[this.n--]=this.u;this.n|=256};e.Sf=function(){this.b=this.d++;this.f=this.g=this.e|=this.a[this.b]};e.oe=function(){this.c=this.e<<1;this.f=this.g=this.e=this.c&255};e.Pf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e|=this.a[this.b]};
-e.me=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.ye=function(){this.d+=(this.f&128?0:(this.B--,this.a[this.d]<<24>>24))+1};e.Uf=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.f=this.g=this.e|=this.a[this.b]};e.Wf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e|=this.a[this.b]};
-e.qe=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.Ce=function(){this.c=0};e.Rf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.f=this.g=this.e|=this.a[this.b]};e.Qf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e|=this.a[this.b]};e.ne=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};
-e.qf=function(){this.b=this.d++;this.a[this.n--]=this.d>>8;this.n|=256;this.a[this.n--]=this.d&255;this.n|=256;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.ie=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e&=this.a[this.b]};e.ve=function(){this.b=this.a[this.d++];this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.r=0;this.w=this.a[this.b]&64?128:0};e.ke=function(){this.b=this.a[this.d++];this.f=this.g=this.e&=this.a[this.b]};
-e.dg=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.$f=function(){this.n=this.n+1&255|256;this.u=this.a[this.n];this.c=this.u&1?256:0;this.g=this.u&2?0:1;this.f=this.u&128;this.r=0;this.w=this.u&64?128:0};e.he=function(){this.b=this.d++;this.f=this.g=this.e&=this.a[this.b]};
-e.cg=function(){this.c=this.c&65280|this.e;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.e=this.c&255};e.ue=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.r=0;this.w=this.a[this.b]&64?128:0};e.ee=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e&=this.a[this.b]};
-e.ag=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.we=function(){this.d+=(this.f&128?(this.B--,this.a[this.d]<<24>>24):0)+1};e.je=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.f=this.g=this.e&=this.a[this.b]};e.le=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e&=this.a[this.b]};
-e.eg=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.ug=function(){this.c=256};e.ge=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.f=this.g=this.e&=this.a[this.b]};e.fe=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e&=this.a[this.b]};
-e.bg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.kg=function(){this.n=this.n+1&255|256;this.u=this.a[this.n];this.c=this.u&1?256:0;this.g=this.u&2?0:1;this.f=this.u&128;this.r=0;this.w=this.u&64?128:0;this.n=this.n+2&255|256;this.d=this.a[this.n-1|256]|this.a[this.n]<<8};
-e.df=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e^=this.a[this.b]};e.ff=function(){this.b=this.a[this.d++];this.f=this.g=this.e^=this.a[this.b]};e.Mf=function(){this.h=this.a[this.d++];this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};e.Xf=function(){this.a[this.n--]=this.e;this.n|=256};e.cf=function(){this.b=this.d++;this.f=this.g=this.e^=this.a[this.b]};
-e.Lf=function(){this.c=this.c&65279|(this.e&1?256:0);this.e=(this.c=this.c&65280|this.e>>1)&255;this.f=this.g=this.c&255};e.pf=function(){this.b=this.d;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.$e=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e^=this.a[this.b]};e.Jf=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
-e.Ae=function(){this.d+=((this.r&255^this.w^this.r>>1)&128?0:(this.B--,this.a[this.d]<<24>>24))+1};e.ef=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.f=this.g=this.e^=this.a[this.b]};e.gf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e^=this.a[this.b]};e.Nf=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
-e.Ee=function(){this.u&=251};e.bf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.f=this.g=this.e^=this.a[this.b]};e.af=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e^=this.a[this.b]};e.Kf=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
-e.lg=function(){this.n=this.n+2&255|256;this.d=(this.a[this.n-1|256]|this.a[this.n]<<8)+1};e.uc=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};e.ae=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=S(this,this.e,this.a[this.b])};
-e.wc=function(){this.b=this.a[this.d++];this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};e.ce=function(){this.b=this.a[this.d++];this.e=S(this,this.e,this.a[this.b])};e.ig=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.Zf=function(){this.n=this.n+1&255|256;this.f=this.g=this.e=this.a[this.n]};
-e.tc=function(){this.b=this.d++;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};e.$d=function(){this.b=this.d++;this.e=S(this,this.e,this.a[this.b])};e.hg=function(){this.c=this.c&65280|this.e;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.e=this.c&255};e.of=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.d=this.a[this.b]|this.a[this.b+1]<<8};
-e.qc=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};e.Xd=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=S(this,this.e,this.a[this.b])};e.fg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};
-e.Be=function(){this.d+=((this.r&255^this.w^this.r>>1)&128?(this.B--,this.a[this.d]<<24>>24):0)+1};e.vc=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};e.be=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.e=S(this,this.e,this.a[this.b])};
-e.xc=function(){this.b=this.a[this.d++]+this.k&255;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};e.de=function(){this.b=this.a[this.d++]+this.k&255;this.e=S(this,this.e,this.a[this.b])};e.jg=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.wg=function(){this.u|=4};
-e.sc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};e.Zd=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.e=S(this,this.e,this.a[this.b])};e.rc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255};
-e.Yd=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.e=S(this,this.e,this.a[this.b])};e.gg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.Ag=function(){this.h=this.a[this.d++]+this.k&255;this.h=this.a[this.h]|this.a[this.h+1]<<8;this.a[this.h]=this.e};e.Ig=function(){this.h=this.a[this.d++];this.a[this.h]=this.m};
-e.Cg=function(){this.h=this.a[this.d++];this.a[this.h]=this.e};e.Fg=function(){this.h=this.a[this.d++];this.a[this.h]=this.k};e.Ze=function(){this.f=this.g=this.m=this.m-1&255};e.Og=function(){this.f=this.g=this.e=this.k};e.Hg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.m};e.xg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.e};e.Eg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.k};
-e.re=function(){this.d+=(this.c&256?0:(this.B--,this.a[this.d]<<24>>24))+1};e.Bg=function(){this.h=this.a[this.d++];this.h=(this.a[this.h]|this.a[this.h+1]<<8)+this.m;this.a[this.h]=this.e};e.Jg=function(){this.h=this.a[this.d++]+this.k&255;this.a[this.h]=this.m};e.Dg=function(){this.h=this.a[this.d++]+this.k&255;this.a[this.h]=this.e};e.Gg=function(){this.h=this.a[this.d++]+this.m&255;this.a[this.h]=this.k};e.Qg=function(){this.f=this.g=this.e=this.m};
-e.zg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.a[this.h]=this.e};e.Pg=function(){this.n=this.k|256};e.yg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.a[this.h]=this.e};e.Gf=function(){this.b=this.d++;this.f=this.g=this.m=this.a[this.b]};e.vf=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e=this.a[this.b]};e.Bf=function(){this.b=this.d++;this.f=this.g=this.k=this.a[this.b]};
-e.Hf=function(){this.b=this.a[this.d++];this.f=this.g=this.m=this.a[this.b]};e.xf=function(){this.b=this.a[this.d++];this.f=this.g=this.e=this.a[this.b]};e.Cf=function(){this.b=this.a[this.d++];this.f=this.g=this.k=this.a[this.b]};e.Mg=function(){this.f=this.g=this.m=this.e};e.uf=function(){this.b=this.d++;this.f=this.g=this.e=this.a[this.b]};e.Lg=function(){this.f=this.g=this.k=this.e};e.Ef=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.m=this.a[this.b]};
-e.rf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e=this.a[this.b]};e.zf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.k=this.a[this.b]};e.se=function(){this.d+=(this.c&256?(this.B--,this.a[this.d]<<24>>24):0)+1};e.wf=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.f=this.g=this.e=this.a[this.b]};e.If=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.m=this.a[this.b]};
-e.yf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e=this.a[this.b]};e.Df=function(){this.b=this.a[this.d++]+this.m&255;this.f=this.g=this.k=this.a[this.b]};e.Fe=function(){this.w=this.r=0};e.tf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.f=this.g=this.e=this.a[this.b]};e.Ng=function(){this.f=this.g=this.k=this.n&255};e.Ff=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.m=this.a[this.b]};
-e.sf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e=this.a[this.b]};e.Af=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.f=this.g=this.k=this.a[this.b]};e.Se=function(){this.b=this.d++;this.f=this.g=this.c=this.m-this.a[this.b];this.c^=256};e.Ke=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
-e.Te=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.m-this.a[this.b];this.c^=256};e.Me=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.We=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.nf=function(){this.f=this.g=this.m=this.m+1&255};e.Je=function(){this.b=this.d++;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ye=function(){this.f=this.g=this.k=this.k-1&255};
-e.Re=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.m-this.a[this.b];this.c^=256};e.Ge=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ue=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.xe=function(){this.d+=(this.g&255?(this.B--,this.a[this.d]<<24>>24):0)+1};
-e.Le=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ne=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Xe=function(){this.h=this.a[this.d++]+this.k&255;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};
-e.De=function(){this.u&=-9;this.q[97]=this.uc;this.q[101]=this.wc;this.q[105]=this.tc;this.q[109]=this.qc;this.q[113]=this.vc;this.q[117]=this.xc;this.q[121]=this.sc;this.q[125]=this.rc;this.q[225]=this.Cc;this.q[229]=this.Ec;this.q[233]=this.Bc;this.q[237]=this.yc;this.q[241]=this.Dc;this.q[245]=this.Fc;this.q[249]=this.Ac;this.q[253]=this.zc};e.Ie=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
-e.He=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ve=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.Pe=function(){this.b=this.d++;this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
-e.Cc=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.qg=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=T(this,this.e,this.a[this.b])};e.Qe=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
-e.Ec=function(){this.b=this.a[this.d++];this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.sg=function(){this.b=this.a[this.d++];this.e=T(this,this.e,this.a[this.b])};e.kf=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};e.mf=function(){this.f=this.g=this.k=this.k+1&255};
-e.Bc=function(){this.b=this.d++;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.pg=function(){this.b=this.d++;this.e=T(this,this.e,this.a[this.b])};e.Of=function(){};e.Oe=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
-e.yc=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.mg=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=T(this,this.e,this.a[this.b])};e.hf=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};e.te=function(){this.d+=(this.g&255?0:(this.B--,this.a[this.d]<<24>>24))+1};
-e.Dc=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.rg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.m;this.e=T(this,this.e,this.a[this.b])};
-e.Fc=function(){this.b=this.a[this.d++]+this.k&255;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.tg=function(){this.b=this.a[this.d++]+this.k&255;this.e=T(this,this.e,this.a[this.b])};e.lf=function(){this.h=this.a[this.d++]+this.k&255;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
-e.vg=function(){this.u|=8;this.q[97]=this.ae;this.q[101]=this.ce;this.q[105]=this.$d;this.q[109]=this.Xd;this.q[113]=this.be;this.q[117]=this.de;this.q[121]=this.Zd;this.q[125]=this.Yd;this.q[225]=this.qg;this.q[229]=this.sg;this.q[233]=this.pg;this.q[237]=this.mg;this.q[241]=this.rg;this.q[245]=this.tg;this.q[249]=this.og;this.q[253]=this.ng};
-e.Ac=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.og=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.m;this.e=T(this,this.e,this.a[this.b])};
-e.zc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.w=this.e^this.a[this.b];this.r=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.ng=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.e=T(this,this.e,this.a[this.b])};e.jf=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
-e.Kg=function(){var a;a=this.a[this.d++];switch(a){case this.vd:this.t("HALT");O(this);break;case this.wd:a=this.d;for(var b="";a=a.pa?a.bb:a.speed+1,!0)}}(this),a=!0}return a};
+e.Q=function(a,b){this.a=a;(this.pc=b)?r("unsupported CPU address buffer offset ("+this.pc+")"):this.K()};e.T=function(a,b){if(a&&!this.m.B){this.H=b;var c=M(b,"video");c&&(this.lb=function(a){return function(){na(a)}}(c),this.ea=function(a){return function(){a.ea()}}(c));this.m.B=!0;this.reset(!0);this.update()}};function oa(a,b,c,d,f){0>pa(a.Z,b,c,d,f)&&(a.gb>b&&(a.gb=b),a.hbpa(a.U,b,c,d,f)&&(a.Ja>b&&(a.Ja=b),a.Kaa.bb&&a.X&&(d=a.X);d>a.Ra&&a.speed=a.wa&&qa(a,!0);a.xa=0;a.Ud=Date.now()||+new Date}
+function ua(a){var b=Date.now()||+new Date,c=a.Rd;a.xa&&(c=Math.round(c*a.xa/a.ob));c-=b-a.Ud;if(b-=a.gc)a.X=Math.round(a.ma/(100*b))/10,864E5<=b&&ma(a);0>c?c=0:a.speed==a.yd?a.X<=a.Ra&&(c=0):a.speed==a.pa&&(c=0);a.qb+=a.xa;return c}
+function P(a){if(ja(a,!0)){a.m.S||(ma(a),a.H&&a.H.start(),a.m.S=!0,a.p.run&&(a.p.run.innerHTML="Halt"),a.ea());ta(a);try{do{a.step(a.Ta);var b=a.Y-a.C;a.ma+=b;a.xa+=b;a.Y=a.C=0;a.va-=a.Ta;0>=a.va&&(a.va+=a.ic,a.lb());a.ua-=a.Ta;0>=a.ua&&(a.ua+=a.hc,ra(a));a.ka-=a.Ta;if(0>=a.ka){a.ka+=a.ob;break}}while(a.m.S)}catch(c){O(a);a.update();ja(a,!1);K(a,c.message);return}setTimeout(function(a){return function(){P(a)}}(a),ua(a))}else a.update(),a.H&&a.H.stop(a.gc,a.ma)}
+e.step=function(a){this.b=this.h=-1;this.Y=this.C=a;do{a=this.a[this.d];this.d++;this.r[a].call(this);if(0<=this.b){if(this.b>=this.gb&&this.b<=this.hb)for(var b=this.b,c=this.d,d=0;d=this.Z[d][0]&&b<=this.Z[d][1]&&this.Z[d][3].call(this.Z[d][2],b,c);this.b=-1}else if(0<=this.h){if(this.h>=this.Ja&&this.h<=this.Ka)for(b=this.h,c=this.d,d=0;d=this.U[d][0]&&b<=this.U[d][1]&&this.U[d][3].call(this.U[d][2],b,c);this.h=-1}this.C-=this.Cd[a]}while(0>1)&128?64:0),b=b|(a.f&128?128:0);return a.v&60|b}
+function S(a,b,c){var d=a.c&256?1:0,f=(b&15)+(c&15)+d;10<=f&&(f=f+6&15|16);f+=(b&240)+(c&240);a.A=b^c;a.s=f;a.f=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.c=f;a.g=b+c+d&255;a.C--;return f&255}function T(a,b,c){var d=a.c&256?0:1,f=(b&15)-(c&15)-d;0>f&&(f=(f-6&15)-16);f+=(b&240)-(c&240);0>f&&(f-=96);a.f=a.g=(a.c=b-c-d)&255;a.A=b^c;a.s=a.c;a.c^=256;a.C--;return f&255}function la(a){a.e=0;a.k=0;a.n=0;a.o=256;a.v=0;a.f=0;a.g=0;a.A=0;a.s=0;a.c=0;a.d=0;a.b=-1;a.h=-1;a.X=0;a.ma=a.Y=a.C=0}
+e.Ae=function(){this.d++;this.a[this.o--]=this.d>>8;this.o|=256;this.a[this.o--]=this.d&255;this.o|=256;this.v|=16;this.v=sa(this);this.a[this.o--]=this.v;this.o|=256;this.v&=239;this.b=65534;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.Uf=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e|=this.a[this.b]};e.Wf=function(){this.b=this.a[this.d++];this.f=this.g=this.e|=this.a[this.b]};
+e.qe=function(){this.h=this.a[this.d++];this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.Zf=function(){this.v=sa(this);this.a[this.o--]=this.v;this.o|=256};e.Tf=function(){this.b=this.d++;this.f=this.g=this.e|=this.a[this.b]};e.pe=function(){this.c=this.e<<1;this.f=this.g=this.e=this.c&255};e.Qf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e|=this.a[this.b]};
+e.ne=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.ze=function(){this.d+=(this.f&128?0:(this.C--,this.a[this.d]<<24>>24))+1};e.Vf=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e|=this.a[this.b]};e.Xf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e|=this.a[this.b]};
+e.re=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};e.De=function(){this.c=0};e.Sf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e|=this.a[this.b]};e.Rf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e|=this.a[this.b]};e.oe=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.a[this.h]<<1;this.f=this.g=this.a[this.h]=this.c&255};
+e.rf=function(){this.b=this.d++;this.a[this.o--]=this.d>>8;this.o|=256;this.a[this.o--]=this.d&255;this.o|=256;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.je=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e&=this.a[this.b]};e.we=function(){this.b=this.a[this.d++];this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.s=0;this.A=this.a[this.b]&64?128:0};e.le=function(){this.b=this.a[this.d++];this.f=this.g=this.e&=this.a[this.b]};
+e.eg=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.ag=function(){this.o=this.o+1&255|256;this.v=this.a[this.o];this.c=this.v&1?256:0;this.g=this.v&2?0:1;this.f=this.v&128;this.s=0;this.A=this.v&64?128:0};e.ie=function(){this.b=this.d++;this.f=this.g=this.e&=this.a[this.b]};
+e.dg=function(){this.c=this.c&65280|this.e;this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.e=this.c&255};e.ve=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.g=this.e&this.a[this.b];this.f=this.f&127|this.a[this.b]&128;this.s=0;this.A=this.a[this.b]&64?128:0};e.fe=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e&=this.a[this.b]};
+e.bg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.xe=function(){this.d+=(this.f&128?(this.C--,this.a[this.d]<<24>>24):0)+1};e.ke=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e&=this.a[this.b]};e.me=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e&=this.a[this.b]};
+e.fg=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.vg=function(){this.c=256};e.he=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e&=this.a[this.b]};e.ge=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e&=this.a[this.b]};
+e.cg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65280|this.a[this.h];this.c<<=1;this.c=this.c&65534|(this.c&512?1:0);this.f=this.g=this.a[this.h]=this.c&255};e.lg=function(){this.o=this.o+1&255|256;this.v=this.a[this.o];this.c=this.v&1?256:0;this.g=this.v&2?0:1;this.f=this.v&128;this.s=0;this.A=this.v&64?128:0;this.o=this.o+2&255|256;this.d=this.a[this.o-1|256]|this.a[this.o]<<8};
+e.ef=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e^=this.a[this.b]};e.gf=function(){this.b=this.a[this.d++];this.f=this.g=this.e^=this.a[this.b]};e.Nf=function(){this.h=this.a[this.d++];this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};e.Yf=function(){this.a[this.o--]=this.e;this.o|=256};e.df=function(){this.b=this.d++;this.f=this.g=this.e^=this.a[this.b]};
+e.Mf=function(){this.c=this.c&65279|(this.e&1?256:0);this.e=(this.c=this.c&65280|this.e>>1)&255;this.f=this.g=this.c&255};e.qf=function(){this.b=this.d;this.d=this.a[this.b]|this.a[this.b+1]<<8};e.af=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e^=this.a[this.b]};e.Kf=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
+e.Be=function(){this.d+=((this.s&255^this.A^this.s>>1)&128?0:(this.C--,this.a[this.d]<<24>>24))+1};e.ff=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e^=this.a[this.b]};e.hf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e^=this.a[this.b]};e.Of=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
+e.Fe=function(){this.v&=251};e.cf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e^=this.a[this.b]};e.bf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e^=this.a[this.b]};e.Lf=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65279|(this.a[this.h]&1?256:0);this.a[this.h]=(this.c=this.c&65280|this.a[this.h]>>1)&255;this.f=this.g=this.c&255};
+e.mg=function(){this.o=this.o+2&255|256;this.d=(this.a[this.o-1|256]|this.a[this.o]<<8)+1};e.vc=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.be=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=S(this,this.e,this.a[this.b])};
+e.xc=function(){this.b=this.a[this.d++];this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.de=function(){this.b=this.a[this.d++];this.e=S(this,this.e,this.a[this.b])};e.jg=function(){this.h=this.a[this.d++];this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.$f=function(){this.o=this.o+1&255|256;this.f=this.g=this.e=this.a[this.o]};
+e.uc=function(){this.b=this.d++;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.ae=function(){this.b=this.d++;this.e=S(this,this.e,this.a[this.b])};e.ig=function(){this.c=this.c&65280|this.e;this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.e=this.c&255};e.pf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.d=this.a[this.b]|this.a[this.b+1]<<8};
+e.rc=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.Yd=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=S(this,this.e,this.a[this.b])};e.gg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};
+e.Ce=function(){this.d+=((this.s&255^this.A^this.s>>1)&128?(this.C--,this.a[this.d]<<24>>24):0)+1};e.wc=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.ce=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.e=S(this,this.e,this.a[this.b])};
+e.yc=function(){this.b=this.a[this.d++]+this.k&255;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.ee=function(){this.b=this.a[this.d++]+this.k&255;this.e=S(this,this.e,this.a[this.b])};e.kg=function(){this.h=this.a[this.d++]+this.k&255;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.xg=function(){this.v|=4};
+e.tc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};e.$d=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=S(this,this.e,this.a[this.b])};e.sc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.e+this.a[this.b]+(this.c&256?1:0);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255};
+e.Zd=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.e=S(this,this.e,this.a[this.b])};e.hg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.c&65280|this.a[this.h];this.c=this.c&65023|(this.c&1?512:0);this.c>>=1;this.f=this.g=this.a[this.h]=this.c&255};e.Bg=function(){this.h=this.a[this.d++]+this.k&255;this.h=this.a[this.h]|this.a[this.h+1]<<8;this.a[this.h]=this.e};e.Jg=function(){this.h=this.a[this.d++];this.a[this.h]=this.n};
+e.Dg=function(){this.h=this.a[this.d++];this.a[this.h]=this.e};e.Gg=function(){this.h=this.a[this.d++];this.a[this.h]=this.k};e.$e=function(){this.f=this.g=this.n=this.n-1&255};e.Pg=function(){this.f=this.g=this.e=this.k};e.Ig=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.n};e.yg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.e};e.Fg=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.a[this.h]=this.k};
+e.se=function(){this.d+=(this.c&256?0:(this.C--,this.a[this.d]<<24>>24))+1};e.Cg=function(){this.h=this.a[this.d++];this.h=(this.a[this.h]|this.a[this.h+1]<<8)+this.n;this.a[this.h]=this.e};e.Kg=function(){this.h=this.a[this.d++]+this.k&255;this.a[this.h]=this.n};e.Eg=function(){this.h=this.a[this.d++]+this.k&255;this.a[this.h]=this.e};e.Hg=function(){this.h=this.a[this.d++]+this.n&255;this.a[this.h]=this.k};e.Rg=function(){this.f=this.g=this.e=this.n};
+e.Ag=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.a[this.h]=this.e};e.Qg=function(){this.o=this.k|256};e.zg=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.a[this.h]=this.e};e.Hf=function(){this.b=this.d++;this.f=this.g=this.n=this.a[this.b]};e.wf=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.e=this.a[this.b]};e.Cf=function(){this.b=this.d++;this.f=this.g=this.k=this.a[this.b]};
+e.If=function(){this.b=this.a[this.d++];this.f=this.g=this.n=this.a[this.b]};e.yf=function(){this.b=this.a[this.d++];this.f=this.g=this.e=this.a[this.b]};e.Df=function(){this.b=this.a[this.d++];this.f=this.g=this.k=this.a[this.b]};e.Ng=function(){this.f=this.g=this.n=this.e};e.vf=function(){this.b=this.d++;this.f=this.g=this.e=this.a[this.b]};e.Mg=function(){this.f=this.g=this.k=this.e};e.Ff=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.n=this.a[this.b]};
+e.sf=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.e=this.a[this.b]};e.Af=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.k=this.a[this.b]};e.te=function(){this.d+=(this.c&256?(this.C--,this.a[this.d]<<24>>24):0)+1};e.xf=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.e=this.a[this.b]};e.Jf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.n=this.a[this.b]};
+e.zf=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.e=this.a[this.b]};e.Ef=function(){this.b=this.a[this.d++]+this.n&255;this.f=this.g=this.k=this.a[this.b]};e.Ge=function(){this.A=this.s=0};e.uf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.e=this.a[this.b]};e.Og=function(){this.f=this.g=this.k=this.o&255};e.Gf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.n=this.a[this.b]};
+e.tf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.e=this.a[this.b]};e.Bf=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.k=this.a[this.b]};e.Te=function(){this.b=this.d++;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};e.Le=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
+e.Ue=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};e.Ne=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Xe=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.of=function(){this.f=this.g=this.n=this.n+1&255};e.Ke=function(){this.b=this.d++;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ze=function(){this.f=this.g=this.k=this.k-1&255};
+e.Se=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.n-this.a[this.b];this.c^=256};e.He=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ve=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.ye=function(){this.d+=(this.g&255?(this.C--,this.a[this.d]<<24>>24):0)+1};
+e.Me=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Oe=function(){this.b=this.a[this.d++]+this.k&255;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.Ye=function(){this.h=this.a[this.d++]+this.k&255;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};
+e.Ee=function(){this.v&=-9;this.r[97]=this.vc;this.r[101]=this.xc;this.r[105]=this.uc;this.r[109]=this.rc;this.r[113]=this.wc;this.r[117]=this.yc;this.r[121]=this.tc;this.r[125]=this.sc;this.r[225]=this.Dc;this.r[229]=this.Fc;this.r[233]=this.Cc;this.r[237]=this.zc;this.r[241]=this.Ec;this.r[245]=this.Gc;this.r[249]=this.Bc;this.r[253]=this.Ac};e.Je=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};
+e.Ie=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.c=this.e-this.a[this.b];this.c^=256};e.We=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.a[this.h]=this.a[this.h]-1&255};e.Qe=function(){this.b=this.d++;this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
+e.Dc=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.rg=function(){this.b=this.a[this.d++]+this.k&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.e=T(this,this.e,this.a[this.b])};e.Re=function(){this.b=this.a[this.d++];this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
+e.Fc=function(){this.b=this.a[this.d++];this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.tg=function(){this.b=this.a[this.d++];this.e=T(this,this.e,this.a[this.b])};e.lf=function(){this.h=this.a[this.d++];this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};e.nf=function(){this.f=this.g=this.k=this.k+1&255};
+e.Cc=function(){this.b=this.d++;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.qg=function(){this.b=this.d++;this.e=T(this,this.e,this.a[this.b])};e.Pf=function(){};e.Pe=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.c=this.k-this.a[this.b];this.c^=256};
+e.zc=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.ng=function(){this.b=this.a[this.d++]|this.a[this.d++]<<8;this.e=T(this,this.e,this.a[this.b])};e.jf=function(){this.h=this.a[this.d++]|this.a[this.d++]<<8;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};e.ue=function(){this.d+=(this.g&255?0:(this.C--,this.a[this.d]<<24>>24))+1};
+e.Ec=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.sg=function(){this.b=this.a[this.d++];this.b=(this.a[this.b]|this.a[this.b+1]<<8)+this.n;this.e=T(this,this.e,this.a[this.b])};
+e.Gc=function(){this.b=this.a[this.d++]+this.k&255;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.ug=function(){this.b=this.a[this.d++]+this.k&255;this.e=T(this,this.e,this.a[this.b])};e.mf=function(){this.h=this.a[this.d++]+this.k&255;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
+e.wg=function(){this.v|=8;this.r[97]=this.be;this.r[101]=this.de;this.r[105]=this.ae;this.r[109]=this.Yd;this.r[113]=this.ce;this.r[117]=this.ee;this.r[121]=this.$d;this.r[125]=this.Zd;this.r[225]=this.rg;this.r[229]=this.tg;this.r[233]=this.qg;this.r[237]=this.ng;this.r[241]=this.sg;this.r[245]=this.ug;this.r[249]=this.pg;this.r[253]=this.og};
+e.Bc=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.pg=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=T(this,this.e,this.a[this.b])};
+e.Ac=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.A=this.e^this.a[this.b];this.s=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};e.og=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.e=T(this,this.e,this.a[this.b])};e.kf=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.k;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
+e.Lg=function(){var a;a=this.a[this.d++];switch(a){case this.wd:this.u("HALT");O(this);break;case this.xd:a=this.d;for(var b="";a=c&&(c+=32);a.ca=a.ca.substr(1);V(a,c)}0=b&&(b+=32),Ba(a,b),W(a,b,!0,a.Pb)&&(a.s.speed==a.s.oa?W(a,b,!1,a.td):(c=!1,a.Q[b]&&(clearTimeout(a.Q[b]),c=!0),c=Aa(a,c),a.Q[a.$=b]=setTimeout(function(a){return function(){W(a,b,!1,a.ud)}}(a),c)),c=!0));return c}
-function W(a,b,c,d){var f=!1;c||(a.Q[b]=null,a.$==b&&(a.$=0));var g=0,k=a.j[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.Ea),k=a.j[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.F[b]|=1<d||d>=this.Ud}a&&(d=this.bb.shift(),void 0!==d&&(this.Vb=d),this.sb=0,this.ic=c);for(d=c=0;8>d;d++)this.Wb&1<d[g][0]&&(k=d[g][0]),h=a.cc&&(d-=a.cc,d=c&&(c+=32);a.da=a.da.substr(1);V(a,c)}0=b&&(b+=32),Ba(a,b),W(a,b,!0,a.Qb)&&(a.t.speed==a.t.pa?W(a,b,!1,a.ud):(c=!1,a.R[b]&&(clearTimeout(a.R[b]),c=!0),c=Aa(a,c),a.R[a.aa=b]=setTimeout(function(a){return function(){W(a,b,!1,a.vd)}}(a),c)),c=!0));return c}
+function W(a,b,c,d){var f=!1;c||(a.R[b]=null,a.aa==b&&(a.aa=0));var g=0,k=a.j[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.Ga),k=a.j[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.G[b]|=1<d||d>=this.Vd}a&&(d=this.cb.shift(),void 0!==d&&(this.Wb=d),this.tb=0,this.jc=c);for(d=c=0;8>d;d++)this.Xb&1<d[g][0]&&(k=d[g][0]),h=a.dc&&(d-=a.dc,dMissing <canvas> support; try a new web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=d.screenColor;
-f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(f.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight));c.appendChild(f);var g=new Image,k=f.getContext("2d"),f=new Da(d,f,k,g);g.onload=function(a){return function(){a.J()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
-function Ga(a){z.call(this,"C1PSerialPort",a);this.A=!1;this.ac=a.demo;this.zd=0;this.yd=1;this.reset()}E(Ga);e=Ga.prototype;e.reset=function(){2!=this.Z&&(this.Ja=this.hb=0,this.ma='10 PRINT "HELLO OSI #'+fa(this)+'"\n',this.Z=this.Pa=0)};e.start=function(){this.C&&this.ac&&(X(this.C," C\n\n",3E3),setTimeout(function(a){return function(){a.Z=1;X(a.C,"LOAD\n")}}(this),12E3));this.ac=!1};
-e.H=function(a,b,c,d){switch(c){case "listSerial":return this.o[c]=d,!0;case "loadSerial":return this.o[c]=d,d.onclick=function(a){return function(){a.o.listSerial&&q(a.o.listSerial.value,a,a.Nd)}}(this),!0}return!1};e.P=function(a,b,c,d){this.a=a;this.ub=b;this.Ed=c-b+1;this.pc=this.ub+this.Ed;if(this.s=d)oa(d,b,c,this,this.N),Q(d,b,c,this,this.L);this.J()};e.S=function(a,b){a&&!this.A&&(this.A=!0,this.G=b,this.C=M(b,"keyboard"))};
-e.Nd=function(a,b,c){b?(this.ma=b,this.Z=this.Pa=0,this.G&&this.C&&this.s.R?(this.t("auto-loading "+a),this.s.da(),"."!=this.ma.charAt(0)?(this.Z=1,X(this.C,"NEW\nLOAD\n")):(this.Z=2,this.G.reset(!0),X(this.C,"ML"))):this.t(a+" ready to load")):this.t(a+" load error ("+c+")")};e.N=function(a,b){void 0!==b&&(a&1?Ha(this):this.ma&&!this.Pa&&Ha(this))};e.L=function(){};
-function Ha(a){if(void 0!==a.ma){a.hb=0;a.Ja=0;if(a.Pa=--d.ka&&(0=d.mc&&(d.V=d.mc),0>d.V&&(d.V=0),d.ka=
-20,a.aa.update(a.aa.p|a.$a),La(a))}this.p=c;a.Wa.p&a.ea&&Y(a,a.Ob,this)}}(a)};a.Wa={p:0,O:function(){},update:function(a){return function(c){void 0!==c&&(this.p=c&~(a.Bb|a.Cb));Y(a,a.Lb,this);a.xa.update();a.Ic.update()}}(a)};a.Rg={p:0,O:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Db)==a.Db&&(a.ba.p=a.Tb|a.Rb|a.Qb),this.p=c);a.ba.update()}}(a)};a.ba={p:a.Tb|a.Rb|a.Qb,O:function(){},update:function(a){return function(c){void 0===c&&(c=a.ba.p);c&=~a.Sb;0<=a.D&&0<=a.M[a.D].ia&&
-(c|=a.Sb);this.p=c;Y(a,a.qd,this)}}(a)};a.xb={p:0,O:function(a){return function(){Ma(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.p=c);Y(a,a.Mb,this)}}(a)};a.Sg={p:0,O:function(){},update:function(){return function(){}}(a)}}
-e.H=function(a,b,c,d){switch(c){case "listDisk":return this.o[c]=d,!0;case "loadDisk":return this.o[c]=d,d.onclick=function(a){return function(){if(a.o.listDisk){var b=a.o.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.t("loading "+aa(b)+"...");q(c,a,a.Md)}}}(this),!0}return!1};e.P=function(a,b,c,d){this.a=a;this.eb=b;if(this.s=d)oa(d,b,c,this,this.N),Q(d,b,c,this,this.L);this.J()};e.S=function(a){a&&!this.A&&(this.A=!0)};
-e.Md=function(a,b,c){if(c)this.t("disk load error ("+c+")");else{c=[];this.t("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.t("data error: "+d[0]);else if(this.M[0]){for(b=0;b=--d.la&&(0=d.nc&&(d.W=d.nc),0>d.W&&(d.W=0),d.la=
+20,a.ba.update(a.ba.q|a.ab),La(a))}this.q=c;a.Xa.q&a.fa&&Y(a,a.Pb,this)}}(a)};a.Xa={q:0,P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c&~(a.Cb|a.Db));Y(a,a.Mb,this);a.za.update();a.Jc.update()}}(a)};a.Sg={q:0,P:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Eb)==a.Eb&&(a.ca.q=a.Ub|a.Sb|a.Rb),this.q=c);a.ca.update()}}(a)};a.ca={q:a.Ub|a.Sb|a.Rb,P:function(){},update:function(a){return function(c){void 0===c&&(c=a.ca.q);c&=~a.Tb;0<=a.F&&0<=a.N[a.F].ja&&
+(c|=a.Tb);this.q=c;Y(a,a.rd,this)}}(a)};a.yb={q:0,P:function(a){return function(){Ma(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.q=c);Y(a,a.Nb,this)}}(a)};a.Tg={q:0,P:function(){},update:function(){return function(){}}(a)}}
+e.I=function(a,b,c,d){switch(c){case "listDisk":return this.p[c]=d,!0;case "loadDisk":return this.p[c]=d,d.onclick=function(a){return function(){if(a.p.listDisk){var b=a.p.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.u("loading "+aa(b)+"...");q(c,a,a.Nd)}}}(this),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.fb=b;if(this.t=d)oa(d,b,c,this,this.O),Q(d,b,c,this,this.M);this.K()};e.T=function(a){a&&!this.m.B&&(this.m.B=!0)};
+e.Nd=function(a,b,c){if(c)this.u("disk load error ("+c+")");else{c=[];this.u("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.u("data error: "+d[0]);else if(this.N[0]){for(b=0;b>8&255);a.push(b&255)}function Na(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;cb?b&=3:32>b&&(b&=17);switch(b){case a.Nb:a=a.Va.p&a.ea?a.aa:a.Hc;break;case a.Kb:a=a.Va;break;case a.Ob:a=a.Wa.p&a.ea?a.xa:a.Ic;break;case a.Lb:a=a.Wa;break;case a.nd:a=c?a.Rg:a.ba;break;case a.Mb:a=a.xb;break;default:a=a.Sg}return a}e.N=function(a,b){void 0!==b&&Pa(this,a-this.eb,!1).O()};e.L=function(a,b){if(void 0!==b){var c=this.s.N(a);Pa(this,a-this.eb,!0).update(c)}};
-function Ka(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.ld||(d|=2),a.aa.p&a.Gb||(d|=1));a.D!=d&&(a.D=d,a.ba.update())}function La(a){0<=a.D&&(a.M[a.D].ia=-1,a.xb.update(255),a.ba.update())}function Ma(a){var b=null;if(0<=a.D){var b=a.M[a.D],c=b.Fa[b.V];void 0!==c&&(0<=b.ia&&b.ia");b&&b.S(!0,a)}
-w(function(){for(var a=I(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===k){r(' definition must appear first in the specification');
-break}if(f=F("debugger",d.id))g["debugger"]=[f],f.P&&f.P(k,h,l,g.cpu[0]);h=new $(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.jb){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;db?b&=3:32>b&&(b&=17);switch(b){case a.Ob:a=a.Wa.q&a.fa?a.ba:a.Ic;break;case a.Lb:a=a.Wa;break;case a.Pb:a=a.Xa.q&a.fa?a.za:a.Jc;break;case a.Mb:a=a.Xa;break;case a.od:a=c?a.Sg:a.ca;break;case a.Nb:a=a.yb;break;default:a=a.Tg}return a}e.O=function(a,b){void 0!==b&&Pa(this,a-this.fb,!1).P()};e.M=function(a,b){if(void 0!==b){var c=this.t.O(a);Pa(this,a-this.fb,!0).update(c)}};
+function Ka(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.md||(d|=2),a.ba.q&a.Hb||(d|=1));a.F!=d&&(a.F=d,a.ca.update())}function La(a){0<=a.F&&(a.N[a.F].ja=-1,a.yb.update(255),a.ca.update())}function Ma(a){var b=null;if(0<=a.F){var b=a.N[a.F],c=b.Ha[b.W];void 0!==c&&(0<=b.ja&&b.ja");b&&b.T(!0,a)}
+w(function(){for(var a=I(window.document,"c1pjs","computer"),b=0;b');return}}if(void 0===k){r(' definition must appear first in the specification');
+break}if(f=F("debugger",d.id))g["debugger"]=[f],f.Q&&f.Q(k,h,l,g.cpu[0]);h=new $(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.kb){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;dh.indexOf("/")&&(h=window.location.pathname+h);a=a.replace(/(]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(h?" url=$2"+h+"$2":""))}h=null;if("<"==a.charAt(0))try{window.ActiveXObject||"ActiveXObject"in window?(f||(a=a.replace(/\s*/g,"")),h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(C){h=
null,a=C.message}else a="unrecognized XML: "+(255/g.exec(a)){var f=d[2];b("Loading "+f+"...");q(f,null,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
diff --git a/versions/pcjs/1.15.8/pc-dbg.js b/versions/pcjs/1.15.8/pc-dbg.js
index c31945353..ed099a137 100644
--- a/versions/pcjs/1.15.8/pc-dbg.js
+++ b/versions/pcjs/1.15.8/pc-dbg.js
@@ -9,96 +9,96 @@ function va(){if(void 0===ra){var a;try{window.localStorage.setItem("PCjs.localS
function ya(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function za(a,b,c){function d(){a-=1;0<=a&&(b()||(a=0));0=this.$f?12:14;this.ec=1<>2;this.eb=this.ec-1;this.Tg=(this.ve+this.ec)/this.ec|0;this.ze=this.Tg-1;this.od=[];this.pd=[];this.Wf=this.Xf=!1;this.Di();this.Qa()}A(y,fb);
-fb.prototype.Di=function(){this.Ca=Array(this.Tg);for(var a=0;a>a.pb;0>this.pb;0>a.pb;0>a.pb].tg(b&a.eb)}
-function nb(a,b){var c=b&a.eb,d=(b&a.Fb)>>a.pb;return c!=a.eb?a.Ca[d].Gj(c):a.Ca[d++].tg(c)|a.Ca[d&a.ze].tg(0)<<8}function ob(a,b,c){a.Ca[(b&a.Fb)>>a.pb].Ag(b&a.eb,c&255)}function pb(a,b,c){var d=b&a.eb;b=(b&a.Fb)>>a.pb;d!=a.eb?a.Ca[b].Pj(d,c&65535):(a.Ca[b++].Ag(d,c&255),a.Ca[b&a.ze].Ag(0,c>>8&255))}
-function qb(a){for(var b=0,c=[],d=0;d>2);for(d=0;d>2]>>>((a&3)<<3)&255},Vo:function(a){var b=a>>2;a=(a&3)<<3;var c=this.sa[b]>>>a;return 24>a?c&65535:c&255|(this.sa[b+1]&255)<<8},cp:function(a,b){var c=a>>2,d=(a&3)<<
-3;this.sa[c]=this.sa[c]&~(255<>2,d=(a&3)<<3;24>d?this.sa[c]=this.sa[c]&~(65535<>8);this.jb=!0},So:function(a){Db(this.ba,this.Ud+a);return this.tg(a)},Uo:function(a){Db(this.ba,this.Ud+a)||Db(this.ba,this.Ud+a+1);return this.Gj(a)},bp:function(a,b){Eb(this.ba,this.Ud+a);this.Ag(a,b)},dp:function(a,b){Eb(this.ba,this.Ud+a)||Eb(this.ba,this.Ud+a+1);this.Pj(a,b)},save:function(){return this.ga?
-null:this.sa},restore:function(a){return this.ga?null==a:a&&this.hm==a.length<<2?(this.sa=a,this.jb=!0):!1},Re:function(a,b){a||(a=[]);void 0===b&&(b=!0);Fb(this,a,b);Gb(this,a,b)},Td:function(a,b){b?0===this.fk++&&Gb(this,Hb):0===this.ek++&&Fb(this,Hb)}};function Ib(a,b){b?0===--a.fk&&(a.Bc=a.hh?a.vf:a.Ag,a.Xl=a.hh?a.vf:a.Pj):0===--a.ek&&(a.rc=a.tg,a.Kl=a.Gj)}function gb(a,b,c,d,e){a.T=b;a.ba=c;a.Ud=d;a.ek=a.fk=0;a.ba&&Jb(a.ba,d,e)}
-function Gb(a,b,c){a.Bc=b[2]&&!a.hh?b[2]:a.vf;a.Xl=b[3]&&!a.hh?b[3]:a.vf;c&&(a.Ag=b[2]?b[2]:a.vf,a.Pj=b[3]?b[3]:a.vf)}function Fb(a,b,c){a.rc=b[0]?b[0]:a.Fh;a.Kl=b[1]?b[1]:a.Fh;c&&(a.tg=b[0]?b[0]:a.Fh,a.Gj=b[1]?b[1]:a.Fh)}var Bb=[hb.prototype.To,hb.prototype.Vo,hb.prototype.cp,hb.prototype.ep],Hb=[hb.prototype.So,hb.prototype.Uo,hb.prototype.bp,hb.prototype.dp];
-function Kb(a,b){y.call(this,"CPU",a,Kb);var c=a.multiplier||1;this.Ed=a.cycles||b;this.Dd=c;this.sh=Math.round(this.Ed/1E4)/100;this.He=this.sh*this.Dd;this.Kb=this.Jb=!1;this.ni=a.autoStart;c=Pa.autostart;void 0!==c&&(this.ni="true"==c?!0:"false"==c?!1:null);this.bf=!1;this.bg=this.lf=0;this.dg=a.csStart;this.kf=a.csInterval;this.mf=a.csStop;var d=this;this.Tn=function(){d.Oe()};this.Qa()}A(y,Kb);k=Kb.prototype;
-k.oc=function(a,b,c,d){this.oa=b;this.ba=d;this.Fa=a;var e=db(a,"Video");e&&(this.ii=function(){Lb(e)},this.Kd=function(){e.Kd()});this.ma=db(a,"ChipSet");this.Qa()};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.Xb=function(a,b){if(!b){if(a&&this.restore){Mb(this);if(!this.restore(a))return!1;Ob(this)}else this.reset();this.ba?this.ba.yn():this.da("No debugger detected")}this.Jb=!0;!Pb(this)&&this.ba&&Qb(this.ba);Rb(this);return!0};
-k.Wb=function(a){this.Jb=!1;return a&&this.save?this.save():!0};function Pb(a){return!0===a.ni||null===a.ni&&!a.ba&&void 0===a.va.run?(a.Oe(),!0):!1}k.Kd=function(){};k.sk=function(){return 0};function Ob(a){void 0===a.dg&&(a.dg=0);void 0===a.kf&&(a.kf=-1);void 0===a.mf&&(a.mf=-1);a.bf=0<=a.dg&&0=a.lf&&(a.lf+=a.kf,c=!0);0<=a.mf&&a.mf<=F(a)&&(a.kf=a.mf=-1,Ob(a),a.zb(),c=!0);c&&a.da(F(a)+" cycles: checksum="+q(a.bg))}}function G(a,b,c,d){void 0!==a.va[b]&&(void 0===d&&(d=4),void 0===c&&(bb(a,"Register "+b+" is invalid"),a.zb()),c=q(c,d),a.va[b].innerHTML!=c&&(a.va[b].innerHTML=c))}k.Yg=function(){};k.ii=function(){};
-k.wb=function(a,b,c,d){var e=this;a=!1;switch(c){case "run":this.va[c]=d;d.onclick=function(){e.Kb?e.zb(!0):e.Oe(!0)};a=!0;break;case "reset":this.va[c]=d;d.onclick=function(){e.Fa&&Tb(e.Fa)};a=!0;break;case "speed":this.va[c]=d;a=!0;break;case "setSpeed":this.va[c]=d,d.onclick=function(){Ub(e,e.Dd<<1,!0)},d.innerHTML=this.He.toFixed(2)+"Mhz",a=!0}return a};function Vb(a,b,c){a.Le+=b;c&&(a.Mc=a.A=0)}
-function Wb(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1a.sh&&(c=Math.round(c/a.Dd));return c}function Mb(a){a.hd=0;a.vh=1;a.Le=a.le=a.Mc=a.A=0;Ob(a);Ub(a,1)}
-function Ub(a,b,c){void 0!==b&&(0.8>a.hd/a.He&&(b=1),a.Dd=b,b=a.sh*a.Dd,a.He!=b&&(a.He=b,b=a.He.toFixed(2)+"Mhz",a.va.setSpeed&&(a.va.setSpeed.innerHTML=b),a.da("target speed: "+b)),c&&a.Kd());Vb(a,a.le);a.le=0;a.jf=oa();a.Ie=0;Wb(a)}
-k.Oe=function(a){if(Za(this,!0)){this.Kb||(Ub(this),this.Fa&&this.Fa.start(this.jf,F(this)),this.Kb=!0,this.ma&&Xb(this.ma),this.va.run&&(this.va.run.innerHTML="Halt"),a&&this.Kd());this.zj>=this.Ed&&Wb(this,!0);this.gg=0;this.th=oa();this.Ie&&(a=this.th-this.Ie,a>this.zk&&(this.jf+=a,this.jf>this.th&&(this.jf=this.th)));try{do{this.uf(this.bf?1:Math.round(this.Mn/this.vh));var b=this.Mc-this.A;this.le+=b;this.gg+=b;Vb(this,0,!0);Sb(this,b);this.fg-=b;0>=this.fg&&(this.fg+=this.Dk,this.ii());this.eg-=
-b;0>=this.eg&&(this.eg+=this.Ck,this.Yg());this.nf-=b;if(0>=this.nf){this.nf+=this.Ki;break}}while(this.Kb)}catch(c){this.zb();Rb(this);this.Fa&&this.Fa.stop(oa(),F(this));Za(this,!1);bb(this,c.message);return}b=setTimeout;a=this.Tn;this.Ie=oa();var d=this.zk;this.gg&&(d=Math.round(d*this.gg/this.Ki));var d=d-(this.Ie-this.th),e=this.Ie-this.jf;e&&(this.hd=Math.round(this.le/(10*e))/100,864E5<=e&&(this.Le=0,this.ma&&Yb(this.ma,!0),Ub(this)));if(0>d||this.hd=this.dg?12:14;this.ec=1<>2;this.gb=this.ec-1;this.Wg=(this.If+this.ec)/this.ec|0;this.Ce=this.Wg-1;this.rd=[];this.sd=[];this.$f=this.ag=!1;this.Fi();this.Ta()}A(y,fb);
+fb.prototype.Fi=function(){this.Ea=Array(this.Wg);for(var a=0;a>a.rb;0>this.rb;0>a.rb;0>a.rb].wg(b&a.gb)}
+function nb(a,b){var c=b&a.gb,d=(b&a.dd)>>a.rb;return c!=a.gb?a.Ea[d].Ij(c):a.Ea[d++].wg(c)|a.Ea[d&a.Ce].wg(0)<<8}function ob(a,b,c){a.Ea[(b&a.dd)>>a.rb].Dg(b&a.gb,c&255)}function pb(a,b,c){var d=b&a.gb;b=(b&a.dd)>>a.rb;d!=a.gb?a.Ea[b].Rj(d,c&65535):(a.Ea[b++].Dg(d,c&255),a.Ea[b&a.Ce].Dg(0,c>>8&255))}
+function qb(a){for(var b=0,c=[],d=0;d>2);for(d=0;d>2]>>>((a&3)<<3)&255},Yo:function(a){var b=a>>2;a=(a&3)<<3;var c=this.va[b]>>>a;return 24>a?c&65535:c&255|(this.va[b+1]&255)<<8},fp:function(a,b){var c=a>>2,d=(a&3)<<
+3;this.va[c]=this.va[c]&~(255<>2,d=(a&3)<<3;24>d?this.va[c]=this.va[c]&~(65535<>8);this.lb=!0},Vo:function(a){Db(this.ca,this.Xd+a);return this.wg(a)},Xo:function(a){Db(this.ca,this.Xd+a)||Db(this.ca,this.Xd+a+1);return this.Ij(a)},ep:function(a,b){Eb(this.ca,this.Xd+a);this.Dg(a,b)},gp:function(a,b){Eb(this.ca,this.Xd+a)||Eb(this.ca,this.Xd+a+1);this.Rj(a,b)},save:function(){return this.ha?
+null:this.va},restore:function(a){return this.ha?null==a:a&&this.lm==a.length<<2?(this.va=a,this.lb=!0):!1},Ue:function(a,b){a||(a=[]);void 0===b&&(b=!0);Fb(this,a,b);Gb(this,a,b)},Wd:function(a,b){b?0===this.hk++&&Gb(this,Hb):0===this.gk++&&Fb(this,Hb)}};function Ib(a,b){b?0===--a.hk&&(a.Cc=a.kh?a.yf:a.Dg,a.am=a.kh?a.yf:a.Rj):0===--a.gk&&(a.rc=a.wg,a.Ol=a.Ij)}function gb(a,b,c,d,e){a.T=b;a.ca=c;a.Xd=d;a.gk=a.hk=0;a.ca&&Jb(a.ca,d,e)}
+function Gb(a,b,c){a.Cc=b[2]&&!a.kh?b[2]:a.yf;a.am=b[3]&&!a.kh?b[3]:a.yf;c&&(a.Dg=b[2]?b[2]:a.yf,a.Rj=b[3]?b[3]:a.yf)}function Fb(a,b,c){a.rc=b[0]?b[0]:a.Ih;a.Ol=b[1]?b[1]:a.Ih;c&&(a.wg=b[0]?b[0]:a.Ih,a.Ij=b[1]?b[1]:a.Ih)}var Bb=[hb.prototype.Wo,hb.prototype.Yo,hb.prototype.fp,hb.prototype.hp],Hb=[hb.prototype.Vo,hb.prototype.Xo,hb.prototype.ep,hb.prototype.gp];
+function Kb(a,b){y.call(this,"CPU",a,Kb);var c=a.cycles||b,d=a.multiplier||1;this.ba={};this.ba.Hd=c;this.ba.Gd=d;this.ba.vh=Math.round(this.ba.Hd/1E4)/100;this.ba.Ke=this.ba.vh*this.ba.Gd;this.pa.Kb=!1;this.pa.Lb=!1;this.pa.qi=a.autoStart;c=Pa.autostart;void 0!==c&&(this.pa.qi="true"==c?!0:"false"==c?!1:null);this.pa.ef=!1;this.ba.eg=this.ba.of=0;this.ba.gg=a.csStart;this.ba.nf=a.csInterval;this.ba.pf=a.csStop;var e=this;this.Wn=function(){e.Re()};this.Ta()}A(y,Kb);k=Kb.prototype;
+k.oc=function(a,b,c,d){this.qa=b;this.ca=d;this.Ha=a;var e=db(a,"Video");e&&(this.li=function(){Lb(e)},this.Nd=function(){e.Nd()});this.na=db(a,"ChipSet");this.Ta()};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.Xb=function(a,b){if(!b){if(a&&this.restore){Mb(this);if(!this.restore(a))return!1;Nb(this)}else this.reset();this.ca?this.ca.Cn():this.ea("No debugger detected")}this.pa.Kb=!0;!Pb(this)&&this.ca&&Qb(this.ca);Rb(this);return!0};
+k.Wb=function(a){this.pa.Kb=!1;return a&&this.save?this.save():!0};function Pb(a){return!0===a.pa.qi||null===a.pa.qi&&!a.ca&&void 0===a.xa.run?(a.Re(),!0):!1}k.Nd=function(){};k.wk=function(){return 0};function Nb(a){void 0===a.ba.gg&&(a.ba.gg=0);void 0===a.ba.nf&&(a.ba.nf=-1);void 0===a.ba.pf&&(a.ba.pf=-1);a.pa.ef=0<=a.ba.gg&&0=a.ba.of&&(a.ba.of+=a.ba.nf,c=!0);0<=a.ba.pf&&a.ba.pf<=F(a)&&(a.ba.nf=a.ba.pf=-1,Nb(a),a.wb(),c=!0);c&&a.ea(F(a)+" cycles: checksum="+q(a.ba.eg))}}function G(a,b,c,d){void 0!==a.xa[b]&&(void 0===d&&(d=4),void 0===c&&(bb(a,"Register "+b+" is invalid"),a.wb()),c=q(c,d),a.xa[b].innerHTML!=c&&(a.xa[b].innerHTML=c))}k.ah=function(){};k.li=function(){};
+k.zb=function(a,b,c,d){var e=this;a=!1;switch(c){case "run":this.xa[c]=d;d.onclick=function(){e.pa.Lb?e.wb(!0):e.Re(!0)};a=!0;break;case "reset":this.xa[c]=d;d.onclick=function(){e.Ha&&Tb(e.Ha)};a=!0;break;case "speed":this.xa[c]=d;a=!0;break;case "setSpeed":this.xa[c]=d,d.onclick=function(){Ub(e,e.ba.Gd<<1,!0)},d.innerHTML=this.ba.Ke.toFixed(2)+"Mhz",a=!0}return a};function Vb(a,b,c){a.Oe+=b;c&&(a.Oc=a.A=0)}
+function Wb(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1a.ba.vh&&(c=Math.round(c/a.ba.Gd));return c}function Mb(a){a.ba.ld=0;a.yh=1;a.Oe=a.oe=a.Oc=a.A=0;Nb(a);Ub(a,1)}
+function Ub(a,b,c){void 0!==b&&(0.8>a.ba.ld/a.ba.Ke&&(b=1),a.ba.Gd=b,b=a.ba.vh*a.ba.Gd,a.ba.Ke!=b&&(a.ba.Ke=b,b=a.ba.Ke.toFixed(2)+"Mhz",a.xa.setSpeed&&(a.xa.setSpeed.innerHTML=b),a.ea("target speed: "+b)),c&&a.Nd());Vb(a,a.oe);a.oe=0;a.ba.mf=oa();a.ba.Le=0;Wb(a)}
+k.Re=function(a){if(Za(this,!0)){this.pa.Lb||(Ub(this),this.Ha&&this.Ha.start(this.ba.mf,F(this)),this.pa.Lb=!0,this.na&&Xb(this.na),this.xa.run&&(this.xa.run.innerHTML="Halt"),a&&this.Nd());this.ba.Ni>=this.ba.Hd&&Wb(this,!0);this.ba.jg=0;this.ba.wh=oa();this.ba.Le&&(a=this.ba.wh-this.ba.Le,a>this.ba.Dk&&(this.ba.mf+=a,this.ba.mf>this.ba.wh&&(this.ba.mf=this.ba.wh)));try{do{this.xf(this.pa.ef?1:Math.round(this.ba.Pn/this.yh));var b=this.Oc-this.A;this.oe+=b;this.ba.jg+=b;Vb(this,0,!0);Sb(this,b);
+this.ba.ig-=b;0>=this.ba.ig&&(this.ba.ig+=this.ba.Hk,this.li());this.ba.hg-=b;0>=this.ba.hg&&(this.ba.hg+=this.ba.Gk,this.ah());this.ba.qf-=b;if(0>=this.ba.qf){this.ba.qf+=this.ba.Mi;break}}while(this.pa.Lb)}catch(c){this.wb();Rb(this);this.Ha&&this.Ha.stop(oa(),F(this));Za(this,!1);bb(this,c.message);return}b=setTimeout;a=this.Wn;this.ba.Le=oa();var d=this.ba.Dk;this.ba.jg&&(d=Math.round(d*this.ba.jg/this.ba.Mi));var d=d-(this.ba.Le-this.ba.wh),e=this.ba.Le-this.ba.mf;e&&(this.ba.ld=Math.round(this.oe/
+(10*e))/100,864E5<=e&&(this.Oe=0,this.na&&Yb(this.na,!0),Ub(this)));if(0>d||this.ba.ld>13,this.Ua=f):b&&768>=b?(this.pa=a,this.Lc=d,this.ab=e,this.Pb=(e&24576)>>13,this.Ua=f):-1}function gc(a){return this.Ua+a}function hc(a){return this.Ua+a}function kc(a,b,c){return a+b<=this.Lc?this.Ua+a:ec.call(this,0,0,c)}
-function ec(a,b,c){c||lc.call(this.T,13,0);return-1}function nc(a,b,c){return a+b<=this.Lc?this.Ua+a:fc.call(this,0,0,c)}function fc(a,b,c){c||lc.call(this.T,13,0);return-1}$b.prototype.save=function(){return[this.pa,this.Ua,this.Lc,this.ab,this.Pb,this.xg]};$b.prototype.restore=function(a){"number"==typeof a?this.load(a):(this.pa=a[0],this.Ua=a[1],this.Lc=a[2],this.ab=a[3],this.Pb=a[4],this.xg=a[5])};
-function ac(a,b){void 0===b&&(b=!!(a.T.Ac&1));b?(a.load=cc,a.cd=kc,a.fc=nc):(a.load=bc,a.cd=gc,a.fc=hc);return b}
-function oc(a){this.Ga=a.model||8088;var b=0;switch(this.Ga){default:case 8088:b=4772727;break;case 80286:b=6E6}Kb.call(this,a,b);this.Tj=61442;this.Dg=4;this.of=255;this.B=80286<=this.Ga?pc:qc;this.Sa=rc.slice();80186<=this.Ga&&(this.of=31,this.Sa[15]=sc,this.Sa[96]=tc,this.Sa[97]=uc,this.Sa[98]=vc,this.Sa[99]=sc,this.Sa[100]=sc,this.Sa[101]=sc,this.Sa[102]=sc,this.Sa[103]=sc,this.Sa[104]=wc,this.Sa[105]=xc,this.Sa[106]=yc,this.Sa[107]=zc,this.Sa[108]=Ac,this.Sa[109]=Bc,this.Sa[110]=Cc,this.Sa[111]=
-Dc,this.Sa[192]=Ec,this.Sa[193]=Fc,this.Sa[200]=Gc,this.Sa[201]=Hc,this.Sa[241]=Ic,Kc[7]=Lc,Nc[7]=Lc,80286<=this.Ga&&(this.Tj=2,this.Dg=0,this.Sa[15]=Oc,this.Sa[99]=Pc,this.Sa[84]=Qc));this.Fg=[];this.Gg=[];this.Mc=this.Vg=0;this.eh=this.ri=!1;this.Ca=[];this.ve=this.Fb=this.pb=this.eb=this.ze=0;this.U=this.wm;this.V=this.xm;this.O=this.Fn;this.P=this.Gn;this.R=this.$o;this.S=this.ap;Rc(this)}A(Kb,oc);
-var qc={Aj:4,aa:5,xa:6,ha:7,ia:8,Q:9,W:11,X:12,Je:4,Fk:60,Gk:83,Tb:3,qb:9,gc:16,zh:1,Kk:19,Mk:28,Ok:16,Nk:21,Lk:37,Ik:2,Ti:9,Jk:5,Hk:33,Vi:10,Ui:8,mg:3,lg:15,bl:51,cl:1,dl:2,el:4,al:32,Wi:15,gl:15,Ub:16,Vb:4,il:11,hl:18,fl:24,Bb:4,jl:2,Xi:16,kl:17,bj:18,ll:19,aj:5,cj:6,ql:2,pl:8,nl:9,ol:10,ml:10,dj:10,ej:10,Qk:80,Sk:144,Pk:86,Rk:154,Uk:101,Wk:165,Tk:107,Vk:171,sl:70,ul:113,rl:76,tl:124,Yk:80,$k:128,Xk:86,Zk:134,og:3,ng:16,jj:10,ij:8,vl:51,hc:8,wl:17,xl:36,pc:11,yl:16,pg:10,ke:2,Qi:18,Ri:7,Si:15,Yi:12,
-Zi:7,$i:11,fj:18,gj:7,hj:15,kj:15,lj:7,mj:13,qj:11,rj:7,sj:8,zl:8,Cl:12,Al:18,Bl:17,Dl:15,oj:8,nj:20,pj:2,vj:3,qg:9,uj:5,tj:11,xj:4,wj:17,El:11},pc={Aj:0,aa:0,xa:0,ha:0,ia:0,Q:0,W:1,X:1,Je:3,Fk:14,Gk:16,Tb:2,qb:7,gc:7,zh:0,Kk:7,Mk:13,Ok:7,Nk:11,Lk:16,Ik:3,Ti:6,Jk:2,Hk:13,Vi:5,Ui:5,mg:2,lg:7,bl:23,cl:0,dl:1,el:3,al:17,Wi:7,gl:11,Ub:7,Vb:3,il:7,hl:11,fl:15,Bb:2,jl:3,Xi:7,kl:8,bj:8,ll:8,aj:4,cj:4,ql:2,pl:3,nl:5,ol:2,ml:3,dj:5,ej:3,Qk:14,Sk:22,Pk:17,Rk:25,Uk:17,Wk:25,Tk:20,Vk:28,sl:13,ul:21,rl:16,tl:24,
-Yk:13,$k:21,Xk:16,Zk:24,og:2,ng:7,jj:5,ij:5,vl:19,hc:5,wl:5,xl:17,pc:3,yl:5,pg:3,ke:0,Qi:8,Ri:5,Si:9,Yi:5,Zi:5,$i:4,fj:5,gj:5,hj:4,kj:7,lj:5,mj:8,qj:3,rj:4,sj:3,zl:11,Cl:11,Al:15,Bl:15,Dl:7,oj:5,nj:8,pj:0,vj:2,qg:6,uj:3,tj:6,xj:3,wj:5,El:5};k=oc.prototype;k.Di=function(a,b,c,d,e){this.Ca=a;this.ve=this.Fb=b;this.pb=c;this.eb=d;this.ze=e};k.reset=function(){this.Kb&&this.zb();Rc(this);Mb(this);this.fd=!1};
-function Rc(a){a.H=0;a.C=0;a.J=0;a.K=0;a.Y=0;a.I=0;a.G=0;a.F=0;a.Ac=65520;a.Dc=0;a.Vd=1023;a.Ic={Bj:0,pa:0,ab:0,rh:-1};a.ie=0;a.ua=new $b(a,"CS");a.vb=new $b(a,"DS");a.rb=new $b(a,"SS");a.Wa=new $b(a,"ES");a.Ul=new $b(a,"ZERO");Sc(a,0,65535);80286<=a.Ga&&(a.xc=0,a.ue=65535,a.Yc=new $b(a,"LDT",!0),a.Qe=new $b(a,"TSS",!0),a.Lb=new $b(a,"VER",!0),Sc(a,65520,61440),a.ua.Ua=16711680);Tc(a,0);Uc(a);a.kb=0;a.Cb=a.ug=-1;a.Og=0;a.ja=a.Ka=-1;a.D=a.vb;a.N=a.rb;a.$=a.ya=0}
-k.sk=function(){var a=this.H+this.C+this.J+this.K+this.Y+this.I+this.G+this.F|0;return a=a+this.ra+this.ua.pa+this.vb.pa+this.rb.pa+this.Wa.pa+Vc(this)|0};function Wc(a,b,c,d){void 0!==d&&(void 0===a.Fg[b]&&(a.Fg[b]=[]),a.Fg[b].push([c,d]))}function Xc(a,b){var c=a.Fg[b];if(void 0!==c)for(var d=0;d>1?128:0}function rd(a){return(a.ka^a.na^a.ka>>1)&a.ea>>1?2048:0}function sd(a){a.Z&=~a.ea}function td(a){a.na=a.ka&16|a.na&-17}function ud(a){a.Z|=a.ea-1}function vd(a){qd(a)&&(a.ka^=a.ea>>1|a.ea>>2,a.na^=32896)}function wd(a){a.ka&=~a.ea;a.na=a.ka&32896|a.na&-32897}function xd(a){a.Z|=a.ea}function yd(a){a.na=~(a.ka&16)&16|a.na&-17}function zd(a){a.Z&=~(a.ea-1)}function Ad(a){qd(a)||(a.ka^=a.ea>>1|a.ea>>2,a.na^=32896)}
-function Bd(a){a.ka|=a.ea;a.na=a.ka&32896|a.na&-32897}function Vc(a){return a.za&-2262|md(a)|nd(a)|od(a)|pd(a)|qd(a)|rd(a)}function Tc(a,b){a.ea=256;a.Z=a.ka=a.na=0;b&1&&xd(a);b&4||(a.ka|=1);b&16&&(a.na|=16);b&64||ud(a);b&128&&Ad(a);b&2048&&Bd(a);a.ag?b=b&-12289|a.za&12288:(a.ie=(b&12288)>>12,!a.ie||a.Ac&1||(a.ie=0));a.ag>a.ie&&(b=b&-513|a.za&512);a.za=a.za&-1793|b&1792|a.Tj;a.za&256&&(a.kb|=2,a.$|=4)}
-k.wb=function(a,b,c,d){var e=!1;switch(c){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.va[c]=d;e=!0;break;default:e=Kb.prototype.wb.call(this,a,b,c,d)}return e};k.tb=function(a){return this.Ca[(a&this.Fb)>>this.pb].rc(a&this.eb)};
-k.ta=function(a){var b=a&this.eb;a=(a&this.Fb)>>this.pb;this.A-=this.B.Aj;return b!=this.eb?this.Ca[a].Kl(b):this.Ca[a++].rc(b)|this.Ca[a&this.ze].rc(0)<<8};k.Jd=function(a,b){this.Ca[(a&this.Fb)>>this.pb].Bc(a&this.eb,b&255)};k.Zc=function(a,b){var c=a&this.eb,d=(a&this.Fb)>>this.pb;this.A-=this.B.Aj;c!=this.eb?this.Ca[d].Xl(c,b&65535):(this.Ca[d++].Bc(c,b&255),this.Ca[d&this.ze].Bc(0,b>>8&255))};k.wm=function(a,b){this.zg=a;this.ja=a.cd(this.rg=b,0);return this.$&1?0:this.tb(this.ja)};
-k.xm=function(a,b){this.zg=a;this.ja=a.cd(this.rg=b,1);return this.$&1?0:this.ta(this.ja)};k.Fn=function(a,b){this.zg=a;this.Ka=this.ja=a.cd(this.rg=b,0);return this.$&1?0:this.tb(this.ja)};k.Gn=function(a,b){this.zg=a;this.Ka=this.ja=a.cd(this.rg=b,1);return this.$&1?0:this.ta(this.ja)};k.$o=function(a){this.$&2||this.Jd(this.zg.fc(this.rg,1),a)};k.ap=function(a){this.$&2||this.Zc(this.zg.fc(this.rg,2),a)};k.fa=function(){var a=this.tb(this.Da);this.Da=this.ua.Ua+(this.ra=this.ra+1&65535);return a};
-k.M=function(){var a=this.tb(this.Da)<<24>>24;this.Da=this.ua.Ua+(this.ra=this.ra+1&65535);return a&65535};k.L=function(){var a=this.ta(this.Da);this.Da=this.ua.Ua+(this.ra=this.ra+2&65535);return a};k.Ja=function(){var a=this.Y;this.Y=this.Y+2&65535;return this.ta(this.rb.cd(a,1))};function L(a,b){var c=a.Y=a.Y-2&65535;a.Zc(a.rb.fc(c,1),b)}
-k.Yg=function(){G(this,"AX",this.H);G(this,"BX",this.C);G(this,"CX",this.J);G(this,"DX",this.K);G(this,"SP",this.Y);G(this,"BP",this.I);G(this,"SI",this.G);G(this,"DI",this.F);G(this,"CS",this.ua.pa);G(this,"DS",this.vb.pa);G(this,"SS",this.rb.pa);G(this,"ES",this.Wa.pa);G(this,"IP",this.ra);var a=Vc(this);G(this,"PS",a);G(this,"C",a&1?1:0,1);G(this,"P",a&4?1:0,1);G(this,"A",a&16?1:0,1);G(this,"Z",a&64?1:0,1);G(this,"S",a&128?1:0,1);G(this,"T",a&256?1:0,1);G(this,"I",a&512?1:0,1);G(this,"D",a&1024?
-1:0,1);G(this,"O",a&2048?1:0,1);this.va.speed&&(this.va.speed.innerHTML=this.Kb&&this.hd?this.hd.toFixed(2)+"Mhz":"Stopped")};
-k.uf=function(a){this.eh=!0;this.ri=a&&this.ba&&Cd(this.ba);this.Mc=this.A=a;this.ma&&Yb(this.ma);a||!this.ba||E(this.ba,Dd)||(this.$|=4);do{var b=this.$&240;if(b)this.ya|=b;else if(this.Ch=this.Da,this.ja=this.Ka=-1,this.D=this.vb,this.N=this.rb,this.ya=this.$&256,this.kb){a:{if(!(this.$&4))if(this.kb&1&&this.za&512){if(b=Ed(this.ma),-1<=b&&(this.kb&=-2,0<=b)){this.kb&=-5;Fd.call(this,b,null,11);b=!0;break a}}else if(this.kb&2){this.kb&=-3;Fd.call(this,1,null,11);b=!0;break a}if(b=this.kb&8){for(var b=
-this.ma,c=!1,d=0;dthis.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=a+b)&255}function Ld(a,b){this.ea=256;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=this.na=a|b)&255}
-function Md(a,b){this.na=a^b;this.Z=this.ka=a+b+(this.Z&this.ea?1:0);this.ea=256;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return this.Z&255}function Nd(a,b){this.na=a^b;this.Z=this.ka=a-b-(this.Z&this.ea?1:0);this.ea=256;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return this.Z&255}function Od(a,b){this.ea=256;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=this.na=a&b)&255}
-function Pd(a,b){this.na=a^b;this.ea=256;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=a-b)&255}function Qd(a,b){this.ea=256;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=this.na=a^b)&255}function Rd(a,b){this.na=a^b;this.ea=256;this.Z=this.ka=a-b;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.Ti:this.B.qb;this.$|=2;return a}
-function Sd(a,b){this.na=a^b;this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=a+b)&65535}function Td(a,b){this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=this.na=a|b)&65535}function Ud(a,b){this.na=a^b;this.Z=this.ka=a+b+(this.Z&this.ea?1:0);this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return this.Z&65535}
-function Vd(a,b){this.na=a^b;this.Z=this.ka=a-b-(this.Z&this.ea?1:0);this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return this.Z&65535}function Wd(a,b){this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=this.na=a&b)&65535}function Xd(a,b){this.na=a^b;this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=a-b)&65535}
-function Yd(a,b){this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.qb:this.B.gc;return(this.Z=this.ka=this.na=a^b)&65535}function Zd(a,b){this.na=a^b;this.ea=65536;this.Z=this.ka=a-b;this.A-=0>this.Ka?0>this.ja?this.B.Tb:this.B.Ti:this.B.qb;this.$|=2;return a}function $d(a,b){this.Z=this.Z&this.ea-1|(a&b?this.ea:0);(a^a>>1)&b>>1?Bd(this):wd(this)}function ae(a,b){var c=a;if(b){var d,e=b&7;e?c=(d=a<>8-e)&255:d=a<<8;$d.call(this,d,256)}return c}
-function be(a,b){var c=a;if(b){var d,e=b&15;e?c=(d=a<>16-e)&65535:d=a<<16;$d.call(this,d,65536)}return c}function ce(a,b){var c=a;if(b){var d,c=b&7,c=d=(a>>c|a<<8-c)&255;d&128&&(d|=256);$d.call(this,d,256)}return c}function de(a,b){var c=a;if(b){var d,c=b&15,c=d=(a>>c|a<<16-c)&65535;d&32768&&(d|=65536);$d.call(this,d,65536)}return c}
-function ee(a,b){var c=a;if(b){var d;(d=(b&this.of)%9)?(d=a<>9-d,c=d&255):d=a|(this.Z&this.ea?1:0)<<8;$d.call(this,d,256)}return c}function fe(a,b){var c=a;if(b){var d;(d=(b&this.of)%17)?(d=a<>17-d,c=d&65535):d=a|(this.Z&this.ea?1:0)<<16;$d.call(this,d,65536)}return c}function ge(a,b){var c=a;b&&(c=(b&this.of)%9,c=a>>c|(this.Z&this.ea?1:0)<<8-c|a<<9-c,$d.call(this,c,256),c&=255);return c}
-function he(a,b){var c=a;b&&(c=(b&this.of)%17,c=a>>c|(this.Z&this.ea?1:0)<<16-c|a<<17-c,$d.call(this,c,65536),c&=65535);return c}function ie(a,b){var c=a;b&&(c=8>b-1;this.Z=this.ka=c>>1;this.Z=c&1?this.Z|256:this.Z&-257;this.na=a^this.Z;this.ea=256;a=this.Z}return a&255}function le(a,b){if(b){var c=16>b-1;this.Z=this.ka=c>>1;this.Z=c&1?this.Z|65536:this.Z&-65537;this.na=a^this.Z;this.ea=65536;a=this.Z}return a&65535}function me(a,b){if(b){8>24>>b-1;this.Z=this.ka=c>>1;this.Z=c&1?this.Z|256:this.Z&-257;this.na=a^this.Z;this.ea=256;a=this.Z}return a&255}
-function ne(a,b){if(b){16>16>>b-1;this.Z=this.ka=c>>1;this.Z=c&1?this.Z|65536:this.Z&-65537;this.na=a^this.Z;this.ea=65536;a=this.Z}return a&65535}function oe(){this.A-=0>this.ja?2:this.B.Dl;return 1}function pe(){var a=this.J&this.of;this.A-=(0>this.ja?this.B.oj:this.B.nj)+(a<this.ja?this.B.oj:this.B.nj)+(a<=e?(this.sa=a,this.Xa=b,this.Nc=c,this.Oa=d&65280,this.type=d&7936,ac(this)):b=-1;return b}return-1}function dc(a){return this.Xa+a}function ec(a){return this.Xa+a}function fc(a,b,c){return a+b<=this.Nc?this.Xa+a:gc.call(this,0,0,c)}
+function gc(a,b,c){c||hc.call(this.T,13,0);return-1}function ic(a,b,c){return a+b<=this.Nc?this.Xa+a:lc.call(this,0,0,c)}function lc(a,b,c){c||hc.call(this.T,13,0);return-1}function mc(a,b,c){var d=a.T.ta(c+2),e=a.T.ta(c+0)|(d&255)<<16;c=a.T.ta(c+4);a.sa=b;a.Xa=e;a.Nc=c;a.Oa=d&65280;ac(a)}$b.prototype.save=function(){return[this.sa,this.Xa,this.Nc,this.Oa,this.ok,this.Ag,this.Jc,this.zc]};
+$b.prototype.restore=function(a){"number"==typeof a?this.load(a):(this.sa=a[0],this.Xa=a[1],this.Nc=a[2],this.Oa=a[3],this.ok=a[4],this.Ag=a[5],this.Jc=a[6],this.zc=a[7])};function ac(a,b){void 0===b&&(b=!!(a.T.Bc&1));b?(a.load=cc,a.gd=fc,a.fc=ic,a.Oa&4096&&(6144==(a.Oa&6656)&&(a.fc=gc),a.Oa&2048||!(a.Oa&512))&&(a.fc=lc),a.Jc=a.sa&3,a.zc=(a.Oa&24576)>>13):(a.load=bc,a.gd=dc,a.fc=ec,a.Jc=a.zc=0)}
+function oc(a){this.Ia=a.model||8088;var b=0;switch(this.Ia){default:case 8088:b=4772727;break;case 80286:b=6E6}Kb.call(this,a,b);this.Vj=61442;this.Gg=4;this.rf=255;this.B=80286<=this.Ia?pc:qc;this.Va=rc.slice();80186<=this.Ia&&(this.rf=31,this.Va[15]=sc,this.Va[96]=tc,this.Va[97]=uc,this.Va[98]=vc,this.Va[99]=sc,this.Va[100]=sc,this.Va[101]=sc,this.Va[102]=sc,this.Va[103]=sc,this.Va[104]=wc,this.Va[105]=xc,this.Va[106]=yc,this.Va[107]=zc,this.Va[108]=Ac,this.Va[109]=Bc,this.Va[110]=Cc,this.Va[111]=
+Dc,this.Va[192]=Ec,this.Va[193]=Fc,this.Va[200]=Gc,this.Va[201]=Hc,this.Va[241]=Ic,Kc[7]=Lc,Nc[7]=Lc,80286<=this.Ia&&(this.Vj=2,this.Gg=0,this.Va[15]=Oc,this.Va[99]=Pc,this.Va[84]=Qc));this.Ig=[];this.Jg=[];this.Oc=this.Yg=0;this.pa.hh=this.pa.pk=!1;this.Ea=[];this.ye=this.rb=this.gb=this.Ce=0;this.U=this.Am;this.V=this.Bm;this.O=this.In;this.P=this.Jn;this.R=this.cp;this.S=this.dp;Rc(this)}A(Kb,oc);
+var qc={Cj:4,aa:5,za:6,ia:7,ja:8,Q:9,W:11,X:12,Me:4,Jk:60,Kk:83,Tb:3,sb:9,gc:16,Ch:1,Ok:19,Qk:28,Sk:16,Rk:21,Pk:37,Mk:2,Wi:9,Nk:5,Lk:33,Yi:10,Xi:8,pg:3,og:15,fl:51,gl:1,hl:2,il:4,el:32,Zi:15,kl:15,Ub:16,Vb:4,ml:11,ll:18,jl:24,Db:4,nl:2,$i:16,ol:17,ej:18,pl:19,dj:5,fj:6,ul:2,tl:8,rl:9,sl:10,ql:10,gj:10,hj:10,Uk:80,Wk:144,Tk:86,Vk:154,Yk:101,$k:165,Xk:107,Zk:171,wl:70,yl:113,vl:76,xl:124,bl:80,dl:128,al:86,cl:134,rg:3,qg:16,mj:10,lj:8,zl:51,hc:8,Al:17,Bl:36,pc:11,Cl:16,sg:10,ne:2,Ti:18,Ui:7,Vi:15,aj:12,
+bj:7,cj:11,ij:18,jj:7,kj:15,nj:15,oj:7,pj:13,tj:11,uj:7,vj:8,Dl:8,Gl:12,El:18,Fl:17,Hl:15,rj:8,qj:20,sj:2,yj:3,tg:9,xj:5,wj:11,Aj:4,zj:17,Il:11},pc={Cj:0,aa:0,za:0,ia:0,ja:0,Q:0,W:1,X:1,Me:3,Jk:14,Kk:16,Tb:2,sb:7,gc:7,Ch:0,Ok:7,Qk:13,Sk:7,Rk:11,Pk:16,Mk:3,Wi:6,Nk:2,Lk:13,Yi:5,Xi:5,pg:2,og:7,fl:23,gl:0,hl:1,il:3,el:17,Zi:7,kl:11,Ub:7,Vb:3,ml:7,ll:11,jl:15,Db:2,nl:3,$i:7,ol:8,ej:8,pl:8,dj:4,fj:4,ul:2,tl:3,rl:5,sl:2,ql:3,gj:5,hj:3,Uk:14,Wk:22,Tk:17,Vk:25,Yk:17,$k:25,Xk:20,Zk:28,wl:13,yl:21,vl:16,xl:24,
+bl:13,dl:21,al:16,cl:24,rg:2,qg:7,mj:5,lj:5,zl:19,hc:5,Al:5,Bl:17,pc:3,Cl:5,sg:3,ne:0,Ti:8,Ui:5,Vi:9,aj:5,bj:5,cj:4,ij:5,jj:5,kj:4,nj:7,oj:5,pj:8,tj:3,uj:4,vj:3,Dl:11,Gl:11,El:15,Fl:15,Hl:7,rj:5,qj:8,sj:0,yj:2,tg:6,xj:3,wj:6,Aj:3,zj:5,Il:5};k=oc.prototype;k.Fi=function(a,b,c,d,e){this.Ea=a;this.ye=b;this.rb=c;this.gb=d;this.Ce=e};k.reset=function(){this.pa.Lb&&this.wb();Rc(this);Mb(this);this.pa.Yc=!1};
+function Rc(a){a.H=0;a.C=0;a.J=0;a.K=0;a.Y=0;a.I=0;a.G=0;a.F=0;a.Bc=65520;a.Ec=0;a.Yd=1023;a.Kc={Dj:0,sa:0,Oa:0,uh:-1};a.le=0;a.wa=new $b(a,"CS");a.yb=new $b(a,"DS");a.tb=new $b(a,"SS");a.Za=new $b(a,"ES");a.Yl=new $b(a,"ZERO");Sc(a,0,65535);80286<=a.Ia&&(a.xc=0,a.xe=65535,a.ad=new $b(a,"LDT",!0),a.Te=new $b(a,"TSS",!0),a.Mb=new $b(a,"VER",!0),Sc(a,65520,61440),a.wa.Xa=16711680);Tc(a,0);Uc(a);a.mb=0;a.Eb=a.xg=-1;a.Rg=0;a.ka=a.Ma=-1;a.D=a.yb;a.N=a.tb;a.$=a.Aa=0}
+k.wk=function(){var a=this.H+this.C+this.J+this.K+this.Y+this.I+this.G+this.F|0;return a=a+this.ua+this.wa.sa+this.yb.sa+this.tb.sa+this.Za.sa+Vc(this)|0};function Wc(a,b,c,d){void 0!==d&&(void 0===a.Ig[b]&&(a.Ig[b]=[]),a.Ig[b].push([c,d]))}function Xc(a,b){var c=a.Ig[b];if(void 0!==c)for(var d=0;d>1?128:0}function rd(a){return(a.la^a.oa^a.la>>1)&a.fa>>1?2048:0}function sd(a){a.Z&=~a.fa}function td(a){a.oa=a.la&16|a.oa&-17}function ud(a){a.Z|=a.fa-1}function vd(a){qd(a)&&(a.la^=a.fa>>1|a.fa>>2,a.oa^=32896)}function wd(a){a.la&=~a.fa;a.oa=a.la&32896|a.oa&-32897}function xd(a){a.Z|=a.fa}function yd(a){a.oa=~(a.la&16)&16|a.oa&-17}function zd(a){a.Z&=~(a.fa-1)}function Ad(a){qd(a)||(a.la^=a.fa>>1|a.fa>>2,a.oa^=32896)}
+function Bd(a){a.la|=a.fa;a.oa=a.la&32896|a.oa&-32897}function Vc(a){return a.Ba&-2262|md(a)|nd(a)|od(a)|pd(a)|qd(a)|rd(a)}function Tc(a,b){a.fa=256;a.Z=a.la=a.oa=0;b&1&&xd(a);b&4||(a.la|=1);b&16&&(a.oa|=16);b&64||ud(a);b&128&&Ad(a);b&2048&&Bd(a);a.wa.Jc?b=b&-12289|a.Ba&12288:(a.le=(b&12288)>>12,!a.le||a.Bc&1||(a.le=0));a.wa.Jc>a.le&&(b=b&-513|a.Ba&512);a.Ba=a.Ba&-1793|b&1792|a.Vj;a.Ba&256&&(a.mb|=2,a.$|=4)}
+k.zb=function(a,b,c,d){var e=!1;switch(c){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.xa[c]=d;e=!0;break;default:e=Kb.prototype.zb.call(this,a,b,c,d)}return e};k.vb=function(a){return this.Ea[(a&this.ye)>>this.rb].rc(a&this.gb)};
+k.ta=function(a){var b=a&this.gb;a=(a&this.ye)>>this.rb;this.A-=this.B.Cj;return b!=this.gb?this.Ea[a].Ol(b):this.Ea[a++].rc(b)|this.Ea[a&this.Ce].rc(0)<<8};k.Md=function(a,b){this.Ea[(a&this.ye)>>this.rb].Cc(a&this.gb,b&255)};k.bd=function(a,b){var c=a&this.gb,d=(a&this.ye)>>this.rb;this.A-=this.B.Cj;c!=this.gb?this.Ea[d].am(c,b&65535):(this.Ea[d++].Cc(c,b&255),this.Ea[d&this.Ce].Cc(0,b>>8&255))};k.Am=function(a,b){this.Cg=a;this.ka=a.gd(this.ug=b,0);return this.$&1?0:this.vb(this.ka)};
+k.Bm=function(a,b){this.Cg=a;this.ka=a.gd(this.ug=b,1);return this.$&1?0:this.ta(this.ka)};k.In=function(a,b){this.Cg=a;this.Ma=this.ka=a.gd(this.ug=b,0);return this.$&1?0:this.vb(this.ka)};k.Jn=function(a,b){this.Cg=a;this.Ma=this.ka=a.gd(this.ug=b,1);return this.$&1?0:this.ta(this.ka)};k.cp=function(a){this.$&2||this.Md(this.Cg.fc(this.ug,1),a)};k.dp=function(a){this.$&2||this.bd(this.Cg.fc(this.ug,2),a)};k.ga=function(){var a=this.vb(this.Fa);this.Fa=this.wa.Xa+(this.ua=this.ua+1&65535);return a};
+k.M=function(){var a=this.vb(this.Fa)<<24>>24;this.Fa=this.wa.Xa+(this.ua=this.ua+1&65535);return a&65535};k.L=function(){var a=this.ta(this.Fa);this.Fa=this.wa.Xa+(this.ua=this.ua+2&65535);return a};k.La=function(){var a=this.Y;this.Y=this.Y+2&65535;return this.ta(this.tb.gd(a,1))};function L(a,b){var c=a.Y=a.Y-2&65535;a.bd(a.tb.fc(c,1),b)}
+k.ah=function(){G(this,"AX",this.H);G(this,"BX",this.C);G(this,"CX",this.J);G(this,"DX",this.K);G(this,"SP",this.Y);G(this,"BP",this.I);G(this,"SI",this.G);G(this,"DI",this.F);G(this,"CS",this.wa.sa);G(this,"DS",this.yb.sa);G(this,"SS",this.tb.sa);G(this,"ES",this.Za.sa);G(this,"IP",this.ua);var a=Vc(this);G(this,"PS",a);G(this,"C",a&1?1:0,1);G(this,"P",a&4?1:0,1);G(this,"A",a&16?1:0,1);G(this,"Z",a&64?1:0,1);G(this,"S",a&128?1:0,1);G(this,"T",a&256?1:0,1);G(this,"I",a&512?1:0,1);G(this,"D",a&1024?
+1:0,1);G(this,"O",a&2048?1:0,1);this.xa.speed&&(this.xa.speed.innerHTML=this.pa.Lb&&this.ba.ld?this.ba.ld.toFixed(2)+"Mhz":"Stopped")};
+k.xf=function(a){this.pa.hh=!0;var b=this.pa.pk=a&&this.ca&&Cd(this.ca);this.Oc=this.A=a;this.na&&Yb(this.na);a||!this.ca||E(this.ca,Dd)||(this.$|=4);do{var c=this.$&240;if(c)this.Aa|=c;else if(this.Fh=this.Fa,this.ka=this.Ma=-1,this.D=this.yb,this.N=this.tb,this.Aa=this.$&256,this.mb){a:{if(!(this.$&4))if(this.mb&1&&this.Ba&512){if(c=Ed(this.na),-1<=c&&(this.mb&=-2,0<=c)){this.mb&=-5;Fd.call(this,c,null,11);c=!0;break a}}else if(this.mb&2){this.mb&=-3;Fd.call(this,1,null,11);c=!0;break a}if(c=this.mb&
+8){for(var c=this.na,d=!1,e=0;ethis.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=a+b)&255}function Md(a,b){this.fa=256;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=this.oa=a|b)&255}
+function Nd(a,b){this.oa=a^b;this.Z=this.la=a+b+(this.Z&this.fa?1:0);this.fa=256;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return this.Z&255}function Od(a,b){this.oa=a^b;this.Z=this.la=a-b-(this.Z&this.fa?1:0);this.fa=256;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return this.Z&255}function Pd(a,b){this.fa=256;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=this.oa=a&b)&255}
+function Qd(a,b){this.oa=a^b;this.fa=256;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=a-b)&255}function Rd(a,b){this.fa=256;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=this.oa=a^b)&255}function Sd(a,b){this.oa=a^b;this.fa=256;this.Z=this.la=a-b;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.Wi:this.B.sb;this.$|=2;return a}
+function Td(a,b){this.oa=a^b;this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=a+b)&65535}function Ud(a,b){this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=this.oa=a|b)&65535}function Vd(a,b){this.oa=a^b;this.Z=this.la=a+b+(this.Z&this.fa?1:0);this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return this.Z&65535}
+function Wd(a,b){this.oa=a^b;this.Z=this.la=a-b-(this.Z&this.fa?1:0);this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return this.Z&65535}function Xd(a,b){this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=this.oa=a&b)&65535}function Yd(a,b){this.oa=a^b;this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=a-b)&65535}
+function Zd(a,b){this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.sb:this.B.gc;return(this.Z=this.la=this.oa=a^b)&65535}function $d(a,b){this.oa=a^b;this.fa=65536;this.Z=this.la=a-b;this.A-=0>this.Ma?0>this.ka?this.B.Tb:this.B.Wi:this.B.sb;this.$|=2;return a}function ae(a,b){this.Z=this.Z&this.fa-1|(a&b?this.fa:0);(a^a>>1)&b>>1?Bd(this):wd(this)}function be(a,b){var c=a;if(b){var d,e=b&7;e?c=(d=a<>8-e)&255:d=a<<8;ae.call(this,d,256)}return c}
+function ce(a,b){var c=a;if(b){var d,e=b&15;e?c=(d=a<>16-e)&65535:d=a<<16;ae.call(this,d,65536)}return c}function de(a,b){var c=a;if(b){var d,c=b&7,c=d=(a>>c|a<<8-c)&255;d&128&&(d|=256);ae.call(this,d,256)}return c}function ee(a,b){var c=a;if(b){var d,c=b&15,c=d=(a>>c|a<<16-c)&65535;d&32768&&(d|=65536);ae.call(this,d,65536)}return c}
+function fe(a,b){var c=a;if(b){var d;(d=(b&this.rf)%9)?(d=a<>9-d,c=d&255):d=a|(this.Z&this.fa?1:0)<<8;ae.call(this,d,256)}return c}function ge(a,b){var c=a;if(b){var d;(d=(b&this.rf)%17)?(d=a<>17-d,c=d&65535):d=a|(this.Z&this.fa?1:0)<<16;ae.call(this,d,65536)}return c}function he(a,b){var c=a;b&&(c=(b&this.rf)%9,c=a>>c|(this.Z&this.fa?1:0)<<8-c|a<<9-c,ae.call(this,c,256),c&=255);return c}
+function ie(a,b){var c=a;b&&(c=(b&this.rf)%17,c=a>>c|(this.Z&this.fa?1:0)<<16-c|a<<17-c,ae.call(this,c,65536),c&=65535);return c}function je(a,b){var c=a;b&&(c=8>b-1;this.Z=this.la=c>>1;this.Z=c&1?this.Z|256:this.Z&-257;this.oa=a^this.Z;this.fa=256;a=this.Z}return a&255}function me(a,b){if(b){var c=16>b-1;this.Z=this.la=c>>1;this.Z=c&1?this.Z|65536:this.Z&-65537;this.oa=a^this.Z;this.fa=65536;a=this.Z}return a&65535}function ne(a,b){if(b){8>24>>b-1;this.Z=this.la=c>>1;this.Z=c&1?this.Z|256:this.Z&-257;this.oa=a^this.Z;this.fa=256;a=this.Z}return a&255}
+function oe(a,b){if(b){16>16>>b-1;this.Z=this.la=c>>1;this.Z=c&1?this.Z|65536:this.Z&-65537;this.oa=a^this.Z;this.fa=65536;a=this.Z}return a&65535}function pe(){this.A-=0>this.ka?2:this.B.Hl;return 1}function qe(){var a=this.J&this.rf;this.A-=(0>this.ka?this.B.rj:this.B.qj)+(a<this.ka?this.B.rj:this.B.qj)+(a<this.Ka?this.B.hc:this.B.wl;return b},se,se,se,se,se,se,se],we=[function(a,b){this.A-=0>this.Ka?this.B.ol:this.B.ml;return b},M,M,M,M,M,M,M],xe=[ae,ce,ee,ge,ie,ke,M,me],ye=[be,de,fe,he,je,le,M,ne],Ae=[function(a,b){b=this.fa();this.Z=this.ka=this.na=a&b;this.ea=256;this.A-=0>this.ja?this.B.uj:this.B.tj;this.$|=2;return a},M,function(a){this.A-=0>this.ja?this.B.og:this.B.ng;return a^255},function(a,b){b=0;this.na=
-a^b;this.ea=256;this.A-=0>this.ja?this.B.og:this.B.ng;return(this.Z=this.ka=b-a)&255},function(a){this.H=this.Cb=(this.Z=(this.H&255)*a)&65535;this.na=this.ka=this.Z;this.ea=256;this.H&65280?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ja?this.B.sl:this.B.rl;this.$|=2;return a},function(a){var b=(this.H<<24>>24)*(a<<24>>24);this.H=this.Cb=b&65535;this.Z=this.na=this.ka=b;this.ea=256;127b?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ja?this.B.Yk:this.B.Xk;this.$|=2;return a},
-function(a){if(!a)return ze.call(this),a;var b=this.H/a;if(255this.ja?this.B.Qk:this.B.Pk;this.$|=2;return a},function(a){if(!a)return ze.call(this),a;var b=(this.H<<16>>16)/(a<<24>>24);if(b>b<<24>>24&65535)return ze.call(this),a;this.Cb=this.H=b&255|((this.H<<16>>16)%(a<<24>>24)&255)<<8;this.ka=this.na=this.Z=b|256;this.ea=256;this.A-=0>this.ja?this.B.Uk:this.B.Tk;this.$|=2;return a}],
-Be=[function(a,b){b=this.L();this.Z=this.ka=this.na=a&b;this.ea=65536;this.A-=0>this.ja?this.B.uj:this.B.tj;this.$|=2;return a},M,function(a){this.A-=0>this.ja?this.B.og:this.B.ng;return a^65535},function(a,b){b=0;this.na=a^b;this.ea=65536;this.A-=0>this.ja?this.B.og:this.B.ng;return(this.Z=this.ka=b-a)&65535},function(a){this.Cb=this.H=(this.Z=this.H*a)&65535;this.ug=this.K=this.Z>>16&65535;this.na=this.ka=this.Z;this.ea=65536;this.K?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ja?this.B.ul:
-this.B.tl;this.$|=2;return a},function(a){var b=(this.H<<16>>16)*(a<<16>>16);this.H=this.Cb=b&65535;this.K=this.ug=b>>16&65535;this.Z=this.na=this.ka=b;this.ea=65536;32767b?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ja?this.B.$k:this.B.Zk;this.$|=2;return a},function(a,b){if(!a)return ze.call(this),a;b=this.H+65536*this.K;var c=Math.floor(b/a);if(65536<=c)return ze.call(this),a;this.Cb=this.H=c&65535;this.ug=this.K=b%a&65535;this.ka=this.na=this.Z=c|65536;this.ea=65536;this.A-=
-0>this.ja?this.B.Sk:this.B.Rk;this.$|=2;return a},function(a,b){if(!a)return ze.call(this),a;var c=a<<16>>16;b=this.K<<16|this.H;var d=Math.floor(b/c);if(d!=(d&65535)<<16>>16)return ze.call(this),a;this.Cb=this.H=d&65535;this.ug=this.K=b%c&65535;this.ka=this.na=this.Z=d|65536;this.ea=65536;this.A-=0>this.ja?this.B.Wk:this.B.Vk;this.$|=2;return a}],Kc=[function(a){this.na=a;a=(this.ka=a+1)&255;this.Z=a|(this.Z&this.ea?1:0)<<8;this.ea=256;this.A-=0>this.ja?this.B.mg:this.B.lg;return a},function(a){this.na=
-a;a=(this.ka=a-1)&255;this.Z=a|(this.Z&this.ea?1:0)<<8;this.ea=256;this.A-=0>this.ja?this.B.mg:this.B.lg;return a},M,M,M,M,M,M],Nc=[function(a){this.na=a;a=(this.ka=a+1)&65535;this.Z=a|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=0>this.ja?this.B.mg:this.B.lg;return a},function(a){this.na=a;a=(this.ka=a-1)&65535;this.Z=a|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=0>this.ja?this.B.mg:this.B.lg;return a},function(a){L(this,this.ra);K(this,a);this.A-=0>this.ja?this.B.Ok:this.B.Nk;this.$|=2;return a},
-function(a){if(0>this.ja)return M.call(this,a);L(this,this.ua.pa);L(this,this.ra);Sc(this,a,this.ta(this.ja+2));this.A-=this.B.Lk;this.$|=2;return a},function(a){K(this,a);this.A-=0>this.ja?this.B.il:this.B.hl;this.$|=2;return a},function(a){if(0>this.ja)return M.call(this,a);Sc(this,a,this.ta(this.ja+2));this.A-=this.B.fl;this.$|=2;return a},function(a){var b=a;this.$&512&&(a=a-2&65535,80286>this.Ga&&(b=a));L(this,b);this.A-=0>this.ja?this.B.pc:this.B.yl;this.$|=2;return a},se],Ce=[ae,ce,ee,ge,ie,
-ke,M,me],De=[be,de,fe,he,je,le,M,ne];function Ee(a,b){this.A-=0>this.Ka?0>this.ja?this.B.ql:this.B.pl:this.B.nl;return b}function Fe(){return Ee.call(this,0,this.Cb)}function Ge(a,b){this.Z=this.ka=this.na=a&b;this.ea=256;this.A-=0>this.Ka?0>this.ja?this.B.vj:this.B.qg:this.B.qg;this.$|=2;return a}function He(a,b){this.Z=this.ka=this.na=a&b;this.ea=65536;this.A-=0>this.Ka?0>this.ja?this.B.vj:this.B.qg:this.B.qg;this.$|=2;return a}
-function Ie(a,b){var c=(b<<16>>16)*(this.fa()<<24>>24);this.Z=this.na=this.ka=c;this.ea=256;32767c?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ja?21:24;return c&65535}function Je(a,b){var c=(b<<16>>16)*(this.L()<<16>>16);this.Z=this.na=this.ka=c;this.ea=65536;32767c?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ja?21:24;return c&65535}function Ke(a){return a}function Le(a){if(0>this.ja)return N.call(this),a;this.A-=this.B.jl;return this.ja}
-function Me(a,b){if(0>this.ja)return N.call(this),a;id(this,this.ta(this.ja+2));this.A-=this.B.Xi;return b}function Ne(a,b){if(0>this.ja)return N.call(this),a;kd(this,this.ta(this.ja+2));this.A-=this.B.Xi;return b}function Oe(a){if(0>this.ja)return sc.call(this),a;var b=a<<16>>16,c=this.ta(this.ja)<<16>>16,d=this.ta(this.ja+2)<<16>>16;this.A-=this.B.Hk;if(bd)K(this,this.Ch-this.ua.Ua),Fd.call(this,5,null,0);this.$|=2;return a}
-function Pe(a,b){this.A-=10+(0>this.ja?0:1);if((a&3)<(b&3))return a=a&-4|b&3,zd(this),a;ud(this);return a}function Qe(a,b){this.A-=14+(0>this.ja?0:2);if(0<=this.Lb.load(b,!0)&&this.Lb.Pb>=(this.ua.pa&3)&&this.Lb.Pb>=(b&3))return zd(this),this.Lb.ab&65280;ud(this);return a}function Ue(a,b){this.A-=14+(0>this.ja?0:2);if(b&65528&&0<=this.Lb.load(b,!0)&&(3072==(this.Lb.ab&3072)||this.Lb.Pb>=(this.ua.pa&3))&&this.Lb.Pb>=(b&3))return zd(this),this.Lb.Lc;ud(this);return a}
-function Ve(a,b){if(0>this.ja){switch(this.Og&7){case 0:this.H=this.H&-256|a;break;case 1:this.J=this.J&-256|a;break;case 2:this.K=this.K&-256|a;break;case 3:this.C=this.C&-256|a;break;case 4:this.H=this.H&255|a<<8;break;case 5:this.J=this.J&255|a<<8;break;case 6:this.K=this.K&255|a<<8;break;case 7:this.C=this.C&255|a<<8}this.A-=this.B.xj}else this.Ka=this.ja,this.R(a),this.A-=this.B.wj;return b}
-function We(a,b){if(0>this.ja){switch(this.Og&7){case 0:this.H=a;break;case 1:this.J=a;break;case 2:this.K=a;break;case 3:this.C=a;break;case 4:this.Y=a;break;case 5:this.I=a;break;case 6:this.G=a;break;case 7:this.F=a}this.A-=this.B.xj}else this.Ka=this.ja,this.S(a),this.A-=this.B.wj;return b}function Fd(a,b,c){gd(this,a)&&(L(this,Vc(this)),this.za&=this.Ic.rh,L(this,this.ua.pa),L(this,this.ra),null!=b&&L(this,b),Sc(this,this.Ic.Bj,this.Ic.pa),this.A-=this.B.bl+c)}
-function Xe(a){a|=this.Ac&1;this.Ac=this.Ac&65520|a&-65521;this.Ac&1&&Uc(this,!0)}function ze(){K(this,this.Ch-this.ua.Ua);Fd.call(this,0,null,2)}function lc(a,b){this.ba&&E(this.ba,Ye)&&this.ba.message("Fault 0x"+t(a)+(null!=b?" (0x"+v(b)+")":"")+" on opcode 0x"+t(mb(this.oa,this.Da))+" at "+da(this.ra,this.ua.pa));80186<=this.Ga&&(K(this,this.Ch-this.ua.Ua),Fd.call(this,a,b,0))}function sc(){lc.call(this,6);this.zb()}
-function N(){K(this,this.Ch-this.ua.Ua);bb(this,"Undefined opcode 0x"+t(mb(this.oa,this.Da))+" at "+da(this.ra,this.ua.pa));this.zb()}function Ze(a){a=a.call(this,this.H&255,this.H&255);this.H=this.H&-256|a}function $e(a){a=a.call(this,this.H&255,this.J&255);this.H=this.H&-256|a}function af(a){a=a.call(this,this.H&255,this.K&255);this.H=this.H&-256|a}function bf(a){a=a.call(this,this.H&255,this.C&255);this.H=this.H&-256|a}function cf(a){a=a.call(this,this.H&255,this.H>>8);this.H=this.H&-256|a}
+var ue=[Ld,Md,Nd,Od,Pd,Qd,Rd,Sd],ve=[Td,Ud,Vd,Wd,Xd,Yd,Zd,$d],we=[function(a,b){this.A-=0>this.Ma?this.B.hc:this.B.Al;return b},te,te,te,te,te,te,te],xe=[function(a,b){this.A-=0>this.Ma?this.B.sl:this.B.ql;return b},M,M,M,M,M,M,M],ye=[be,de,fe,he,je,le,M,ne],ze=[ce,ee,ge,ie,ke,me,M,oe],Be=[function(a,b){b=this.ga();this.Z=this.la=this.oa=a&b;this.fa=256;this.A-=0>this.ka?this.B.xj:this.B.wj;this.$|=2;return a},M,function(a){this.A-=0>this.ka?this.B.rg:this.B.qg;return a^255},function(a,b){b=0;this.oa=
+a^b;this.fa=256;this.A-=0>this.ka?this.B.rg:this.B.qg;return(this.Z=this.la=b-a)&255},function(a){this.H=this.Eb=(this.Z=(this.H&255)*a)&65535;this.oa=this.la=this.Z;this.fa=256;this.H&65280?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ka?this.B.wl:this.B.vl;this.$|=2;return a},function(a){var b=(this.H<<24>>24)*(a<<24>>24);this.H=this.Eb=b&65535;this.Z=this.oa=this.la=b;this.fa=256;127b?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ka?this.B.bl:this.B.al;this.$|=2;return a},
+function(a){if(!a)return Ae.call(this),a;var b=this.H/a;if(255this.ka?this.B.Uk:this.B.Tk;this.$|=2;return a},function(a){if(!a)return Ae.call(this),a;var b=(this.H<<16>>16)/(a<<24>>24);if(b>b<<24>>24&65535)return Ae.call(this),a;this.Eb=this.H=b&255|((this.H<<16>>16)%(a<<24>>24)&255)<<8;this.la=this.oa=this.Z=b|256;this.fa=256;this.A-=0>this.ka?this.B.Yk:this.B.Xk;this.$|=2;return a}],
+Ce=[function(a,b){b=this.L();this.Z=this.la=this.oa=a&b;this.fa=65536;this.A-=0>this.ka?this.B.xj:this.B.wj;this.$|=2;return a},M,function(a){this.A-=0>this.ka?this.B.rg:this.B.qg;return a^65535},function(a,b){b=0;this.oa=a^b;this.fa=65536;this.A-=0>this.ka?this.B.rg:this.B.qg;return(this.Z=this.la=b-a)&65535},function(a){this.Eb=this.H=(this.Z=this.H*a)&65535;this.xg=this.K=this.Z>>16&65535;this.oa=this.la=this.Z;this.fa=65536;this.K?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ka?this.B.yl:
+this.B.xl;this.$|=2;return a},function(a){var b=(this.H<<16>>16)*(a<<16>>16);this.H=this.Eb=b&65535;this.K=this.xg=b>>16&65535;this.Z=this.oa=this.la=b;this.fa=65536;32767b?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ka?this.B.dl:this.B.cl;this.$|=2;return a},function(a,b){if(!a)return Ae.call(this),a;b=this.H+65536*this.K;var c=Math.floor(b/a);if(65536<=c)return Ae.call(this),a;this.Eb=this.H=c&65535;this.xg=this.K=b%a&65535;this.la=this.oa=this.Z=c|65536;this.fa=65536;this.A-=
+0>this.ka?this.B.Wk:this.B.Vk;this.$|=2;return a},function(a,b){if(!a)return Ae.call(this),a;var c=a<<16>>16;b=this.K<<16|this.H;var d=Math.floor(b/c);if(d!=(d&65535)<<16>>16)return Ae.call(this),a;this.Eb=this.H=d&65535;this.xg=this.K=b%c&65535;this.la=this.oa=this.Z=d|65536;this.fa=65536;this.A-=0>this.ka?this.B.$k:this.B.Zk;this.$|=2;return a}],Kc=[function(a){this.oa=a;a=(this.la=a+1)&255;this.Z=a|(this.Z&this.fa?1:0)<<8;this.fa=256;this.A-=0>this.ka?this.B.pg:this.B.og;return a},function(a){this.oa=
+a;a=(this.la=a-1)&255;this.Z=a|(this.Z&this.fa?1:0)<<8;this.fa=256;this.A-=0>this.ka?this.B.pg:this.B.og;return a},M,M,M,M,M,M],Nc=[function(a){this.oa=a;a=(this.la=a+1)&65535;this.Z=a|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=0>this.ka?this.B.pg:this.B.og;return a},function(a){this.oa=a;a=(this.la=a-1)&65535;this.Z=a|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=0>this.ka?this.B.pg:this.B.og;return a},function(a){L(this,this.ua);K(this,a);this.A-=0>this.ka?this.B.Sk:this.B.Rk;this.$|=2;return a},
+function(a){if(0>this.ka)return M.call(this,a);L(this,this.wa.sa);L(this,this.ua);Sc(this,a,this.ta(this.ka+2));this.A-=this.B.Pk;this.$|=2;return a},function(a){K(this,a);this.A-=0>this.ka?this.B.ml:this.B.ll;this.$|=2;return a},function(a){if(0>this.ka)return M.call(this,a);Sc(this,a,this.ta(this.ka+2));this.A-=this.B.jl;this.$|=2;return a},function(a){var b=a;this.$&512&&(a=a-2&65535,80286>this.Ia&&(b=a));L(this,b);this.A-=0>this.ka?this.B.pc:this.B.Cl;this.$|=2;return a},te],De=[be,de,fe,he,je,
+le,M,ne],Ee=[ce,ee,ge,ie,ke,me,M,oe];function Fe(a,b){this.A-=0>this.Ma?0>this.ka?this.B.ul:this.B.tl:this.B.rl;return b}function Ge(){return Fe.call(this,0,this.Eb)}function He(a,b){this.Z=this.la=this.oa=a&b;this.fa=256;this.A-=0>this.Ma?0>this.ka?this.B.yj:this.B.tg:this.B.tg;this.$|=2;return a}function Ie(a,b){this.Z=this.la=this.oa=a&b;this.fa=65536;this.A-=0>this.Ma?0>this.ka?this.B.yj:this.B.tg:this.B.tg;this.$|=2;return a}
+function Je(a,b){var c=(b<<16>>16)*(this.ga()<<24>>24);this.Z=this.oa=this.la=c;this.fa=256;32767c?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ka?21:24;return c&65535}function Ke(a,b){var c=(b<<16>>16)*(this.L()<<16>>16);this.Z=this.oa=this.la=c;this.fa=65536;32767c?(xd(this),Bd(this)):(sd(this),wd(this));this.A-=0>this.ka?21:24;return c&65535}function Le(a){return a}function Me(a){if(0>this.ka)return N.call(this),a;this.A-=this.B.nl;return this.ka}
+function Ne(a,b){if(0>this.ka)return N.call(this),a;id(this,this.ta(this.ka+2));this.A-=this.B.$i;return b}function Oe(a,b){if(0>this.ka)return N.call(this),a;kd(this,this.ta(this.ka+2));this.A-=this.B.$i;return b}function Pe(a){if(0>this.ka)return sc.call(this),a;var b=a<<16>>16,c=this.ta(this.ka)<<16>>16,d=this.ta(this.ka+2)<<16>>16;this.A-=this.B.Lk;if(bd)K(this,this.Fh-this.wa.Xa),Fd.call(this,5,null,0);this.$|=2;return a}
+function Qe(a,b){this.A-=10+(0>this.ka?0:1);if((a&3)<(b&3))return a=a&-4|b&3,zd(this),a;ud(this);return a}function Re(a,b){this.A-=14+(0>this.ka?0:2);if(0<=this.Mb.load(b,!0)&&this.Mb.zc>=this.wa.Jc&&this.Mb.zc>=(b&3))return zd(this),this.Mb.Oa&65280;ud(this);return a}function Ve(a,b){this.A-=14+(0>this.ka?0:2);if(b&65528&&0<=this.Mb.load(b,!0)&&(7168==(this.Mb.Oa&7168)||this.Mb.zc>=this.wa.Jc)&&this.Mb.zc>=(b&3))return zd(this),this.Mb.Nc;ud(this);return a}
+function We(a,b){if(0>this.ka){switch(this.Rg&7){case 0:this.H=this.H&-256|a;break;case 1:this.J=this.J&-256|a;break;case 2:this.K=this.K&-256|a;break;case 3:this.C=this.C&-256|a;break;case 4:this.H=this.H&255|a<<8;break;case 5:this.J=this.J&255|a<<8;break;case 6:this.K=this.K&255|a<<8;break;case 7:this.C=this.C&255|a<<8}this.A-=this.B.Aj}else this.Ma=this.ka,this.R(a),this.A-=this.B.zj;return b}
+function Xe(a,b){if(0>this.ka){switch(this.Rg&7){case 0:this.H=a;break;case 1:this.J=a;break;case 2:this.K=a;break;case 3:this.C=a;break;case 4:this.Y=a;break;case 5:this.I=a;break;case 6:this.G=a;break;case 7:this.F=a}this.A-=this.B.Aj}else this.Ma=this.ka,this.S(a),this.A-=this.B.zj;return b}function Fd(a,b,c){gd(this,a)&&(L(this,Vc(this)),this.Ba&=this.Kc.uh,L(this,this.wa.sa),L(this,this.ua),null!=b&&L(this,b),Sc(this,this.Kc.Dj,this.Kc.sa),this.A-=this.B.fl+c)}
+function Ye(a){a|=this.Bc&1;this.Bc=this.Bc&65520|a&-65521;this.Bc&1&&Uc(this,!0)}function Ae(){K(this,this.Fh-this.wa.Xa);Fd.call(this,0,null,2)}function hc(a,b,c){this.ca&&(E(this.ca,Id)&&this.ca.message("Fault 0x"+t(a)+(null!=b?" (0x"+v(b)+")":"")+" on opcode 0x"+t(mb(this.qa,this.Fa))+" at "+da(this.ua,this.wa.sa)),c&&this.wb());80186<=this.Ia&&(K(this,this.Fh-this.wa.Xa),Fd.call(this,a,b,0))}function sc(){hc.call(this,6);this.wb()}
+function N(){K(this,this.Fh-this.wa.Xa);bb(this,"Undefined opcode 0x"+t(mb(this.qa,this.Fa))+" at "+da(this.ua,this.wa.sa));this.wb()}function Ze(a){a=a.call(this,this.H&255,this.H&255);this.H=this.H&-256|a}function $e(a){a=a.call(this,this.H&255,this.J&255);this.H=this.H&-256|a}function af(a){a=a.call(this,this.H&255,this.K&255);this.H=this.H&-256|a}function bf(a){a=a.call(this,this.H&255,this.C&255);this.H=this.H&-256|a}function cf(a){a=a.call(this,this.H&255,this.H>>8);this.H=this.H&-256|a}
function df(a){a=a.call(this,this.H&255,this.J>>8);this.H=this.H&-256|a}function ef(a){a=a.call(this,this.H&255,this.K>>8);this.H=this.H&-256|a}function ff(a){a=a.call(this,this.H&255,this.C>>8);this.H=this.H&-256|a}function gf(a){a=a.call(this,this.J&255,this.H&255);this.J=this.J&-256|a}function hf(a){a=a.call(this,this.J&255,this.J&255);this.J=this.J&-256|a}function jf(a){a=a.call(this,this.J&255,this.K&255);this.J=this.J&-256|a}
function kf(a){a=a.call(this,this.J&255,this.C&255);this.J=this.J&-256|a}function lf(a){a=a.call(this,this.J&255,this.H>>8);this.J=this.J&-256|a}function mf(a){a=a.call(this,this.J&255,this.J>>8);this.J=this.J&-256|a}function nf(a){a=a.call(this,this.J&255,this.K>>8);this.J=this.J&-256|a}function of(a){a=a.call(this,this.J&255,this.C>>8);this.J=this.J&-256|a}function pf(a){a=a.call(this,this.K&255,this.H&255);this.K=this.K&-256|a}
function qf(a){a=a.call(this,this.K&255,this.J&255);this.K=this.K&-256|a}function rf(a){a=a.call(this,this.K&255,this.K&255);this.K=this.K&-256|a}function sf(a){a=a.call(this,this.K&255,this.C&255);this.K=this.K&-256|a}function tf(a){a=a.call(this,this.K&255,this.H>>8);this.K=this.K&-256|a}function uf(a){a=a.call(this,this.K&255,this.J>>8);this.K=this.K&-256|a}function vf(a){a=a.call(this,this.K&255,this.K>>8);this.K=this.K&-256|a}
@@ -116,18 +116,18 @@ function Qg(a){this.Y=a.call(this,this.Y,this.H)}function Rg(a){this.Y=a.call(th
function $g(a){this.I=a.call(this,this.I,this.K)}function ah(a){this.I=a.call(this,this.I,this.C)}function bh(a){this.I=a.call(this,this.I,this.Y)}function ch(a){this.I=a.call(this,this.I,this.I)}function dh(a){this.I=a.call(this,this.I,this.G)}function eh(a){this.I=a.call(this,this.I,this.F)}function fh(a){this.G=a.call(this,this.G,this.H)}function gh(a){this.G=a.call(this,this.G,this.J)}function hh(a){this.G=a.call(this,this.G,this.K)}function ih(a){this.G=a.call(this,this.G,this.C)}
function jh(a){this.G=a.call(this,this.G,this.Y)}function kh(a){this.G=a.call(this,this.G,this.I)}function lh(a){this.G=a.call(this,this.G,this.G)}function mh(a){this.G=a.call(this,this.G,this.F)}function nh(a){this.F=a.call(this,this.F,this.H)}function oh(a){this.F=a.call(this,this.F,this.J)}function ph(a){this.F=a.call(this,this.F,this.K)}function qh(a){this.F=a.call(this,this.F,this.C)}function rh(a){this.F=a.call(this,this.F,this.Y)}function sh(a){this.F=a.call(this,this.F,this.I)}
function th(a){this.F=a.call(this,this.F,this.G)}function uh(a){this.F=a.call(this,this.F,this.F)}
-var vh=[function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.H&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.H&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.H&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.H&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.H&255);this.R(a);this.A-=this.B.aa},
-function(a){a=a.call(this,this.O(this.D,this.F),this.H&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.H&255);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),this.H&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.J&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.J&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,
-this.I+this.G&65535),this.J&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.J&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.J&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.J&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.J&255);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),this.J&255);this.R(a);
-this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.K&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.K&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.K&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.K&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.K&255);this.R(a);this.A-=
-this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.K&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.K&255);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),this.K&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.C&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.C&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,
-this.O(this.N,this.I+this.G&65535),this.C&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.C&255);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.C&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.C&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.C&255);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),this.C&
-255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.H>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.H>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.H>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.H>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.H>>8);this.R(a);
-this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.H>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.H>>8);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),this.H>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.J>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.J>>8);this.R(a);this.A-=this.B.ia},function(a){a=
-a.call(this,this.O(this.N,this.I+this.G&65535),this.J>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.J>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.J>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.J>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.J>>8);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),
-this.J>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.K>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.K>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.K>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.K>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.K>>8);
-this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.K>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.K>>8);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),this.K>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.C>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.C>>8);this.R(a);this.A-=this.B.ia},function(a){a=
-a.call(this,this.O(this.N,this.I+this.G&65535),this.C>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.C>>8);this.R(a);this.A-=this.B.ha},function(a){a=a.call(this,this.O(this.D,this.G),this.C>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.C>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.C>>8);this.R(a);this.A-=this.B.xa},function(a){a=a.call(this,this.O(this.D,this.C),
+var vh=[function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.H&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.H&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.H&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.H&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.H&255);this.R(a);this.A-=this.B.aa},
+function(a){a=a.call(this,this.O(this.D,this.F),this.H&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.H&255);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),this.H&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.J&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.J&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,
+this.I+this.G&65535),this.J&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.J&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.J&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.J&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.J&255);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),this.J&255);this.R(a);
+this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.K&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.K&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.K&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.K&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.K&255);this.R(a);this.A-=
+this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.K&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.K&255);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),this.K&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.C&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.C&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,
+this.O(this.N,this.I+this.G&65535),this.C&255);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.C&255);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.C&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.C&255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.C&255);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),this.C&
+255);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.H>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.H>>8);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.H>>8);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.H>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.H>>8);this.R(a);
+this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.H>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.H>>8);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),this.H>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.J>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.J>>8);this.R(a);this.A-=this.B.ja},function(a){a=
+a.call(this,this.O(this.N,this.I+this.G&65535),this.J>>8);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.J>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.J>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.J>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.J>>8);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),
+this.J>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.K>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.K>>8);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.G&65535),this.K>>8);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.K>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.K>>8);
+this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.K>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.K>>8);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),this.K>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G&65535),this.C>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.C+this.F&65535),this.C>>8);this.R(a);this.A-=this.B.ja},function(a){a=
+a.call(this,this.O(this.N,this.I+this.G&65535),this.C>>8);this.R(a);this.A-=this.B.ja},function(a){a=a.call(this,this.O(this.N,this.I+this.F&65535),this.C>>8);this.R(a);this.A-=this.B.ia},function(a){a=a.call(this,this.O(this.D,this.G),this.C>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.F),this.C>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.L()),this.C>>8);this.R(a);this.A-=this.B.za},function(a){a=a.call(this,this.O(this.D,this.C),
this.C>>8);this.R(a);this.A-=this.B.aa},function(a){a=a.call(this,this.O(this.D,this.C+this.G+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.W},function(a){a=a.call(this,this.O(this.D,this.C+this.F+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.X},function(a){a=a.call(this,this.O(this.N,this.I+this.G+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.X},function(a){a=a.call(this,this.O(this.N,this.I+this.F+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.W},function(a){a=a.call(this,
this.O(this.D,this.G+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.F+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.N,this.I+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.C+this.M()&65535),this.H&255);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.C+this.G+this.M()&65535),this.J&255);this.R(a);this.A-=this.B.W},function(a){a=
a.call(this,this.O(this.D,this.C+this.F+this.M()&65535),this.J&255);this.R(a);this.A-=this.B.X},function(a){a=a.call(this,this.O(this.N,this.I+this.G+this.M()&65535),this.J&255);this.R(a);this.A-=this.B.X},function(a){a=a.call(this,this.O(this.N,this.I+this.F+this.M()&65535),this.J&255);this.R(a);this.A-=this.B.W},function(a){a=a.call(this,this.O(this.D,this.G+this.M()&65535),this.J&255);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.F+this.M()&65535),this.J&255);this.R(a);
@@ -155,18 +155,18 @@ a.call(this,this.O(this.D,this.F+this.L()&65535),this.J>>8);this.R(a);this.A-=th
function(a){a=a.call(this,this.O(this.N,this.I+this.G+this.L()&65535),this.K>>8);this.R(a);this.A-=this.B.X},function(a){a=a.call(this,this.O(this.N,this.I+this.F+this.L()&65535),this.K>>8);this.R(a);this.A-=this.B.W},function(a){a=a.call(this,this.O(this.D,this.G+this.L()&65535),this.K>>8);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.F+this.L()&65535),this.K>>8);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.N,this.I+this.L()&65535),this.K>>8);this.R(a);
this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.C+this.L()&65535),this.K>>8);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.C+this.G+this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.W},function(a){a=a.call(this,this.O(this.D,this.C+this.F+this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.X},function(a){a=a.call(this,this.O(this.N,this.I+this.G+this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.X},function(a){a=a.call(this,this.O(this.N,this.I+this.F+
this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.W},function(a){a=a.call(this,this.O(this.D,this.G+this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.F+this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.N,this.I+this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.Q},function(a){a=a.call(this,this.O(this.D,this.C+this.L()&65535),this.C>>8);this.R(a);this.A-=this.B.Q},Ze,gf,pf,xf,Ff,Nf,Vf,cg,$e,hf,qf,yf,Gf,
-Of,Wf,dg,af,jf,rf,zf,Hf,Pf,Xf,eg,bf,kf,sf,Af,If,Qf,Yf,fg,cf,lf,tf,Bf,Jf,Rf,Zf,gg,df,mf,uf,Cf,Kf,Sf,$f,hg,ef,nf,vf,Df,Lf,Tf,ag,ig,ff,of,wf,Ef,Mf,Uf,bg,jg],wh=[function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.H);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.H);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.H);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.F&
-65535),this.H);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.G),this.H);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.H);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.H);this.S(a);this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,this.C),this.H);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.J);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,
-this.P(this.D,this.C+this.F&65535),this.J);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.J);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.J);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.G),this.J);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.J);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.J);this.S(a);
-this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,this.C),this.J);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.K);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.K);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.K);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.K);this.S(a);this.A-=this.B.ha},function(a){a=
-a.call(this,this.P(this.D,this.G),this.K);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.K);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.K);this.S(a);this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,this.C),this.K);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.C);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.C);this.S(a);
-this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.C);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.C);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.G),this.C);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.C);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.C);this.S(a);this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,
-this.C),this.C);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.Y);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.Y);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.Y);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.Y);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.G),this.Y);this.S(a);
-this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.Y);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.Y);this.S(a);this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,this.C),this.Y);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.I);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.I);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,
-this.I+this.G&65535),this.I);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.I);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.G),this.I);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.I);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.I);this.S(a);this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,this.C),this.I);this.S(a);this.A-=this.B.aa},function(a){a=
-a.call(this,this.P(this.D,this.C+this.G&65535),this.G);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.G);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.G);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.G);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.G),this.G);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,
-this.F),this.G);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.G);this.S(a);this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,this.C),this.G);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.F);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.F);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.F);this.S(a);this.A-=this.B.ia},
-function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.F);this.S(a);this.A-=this.B.ha},function(a){a=a.call(this,this.P(this.D,this.G),this.F);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.F);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.F);this.S(a);this.A-=this.B.xa},function(a){a=a.call(this,this.P(this.D,this.C),this.F);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G+this.M()&
+Of,Wf,dg,af,jf,rf,zf,Hf,Pf,Xf,eg,bf,kf,sf,Af,If,Qf,Yf,fg,cf,lf,tf,Bf,Jf,Rf,Zf,gg,df,mf,uf,Cf,Kf,Sf,$f,hg,ef,nf,vf,Df,Lf,Tf,ag,ig,ff,of,wf,Ef,Mf,Uf,bg,jg],wh=[function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.H);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.H);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.H);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.F&
+65535),this.H);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.G),this.H);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.H);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.H);this.S(a);this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,this.C),this.H);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.J);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,
+this.P(this.D,this.C+this.F&65535),this.J);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.J);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.J);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.G),this.J);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.J);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.J);this.S(a);
+this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,this.C),this.J);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.K);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.K);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.K);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.K);this.S(a);this.A-=this.B.ia},function(a){a=
+a.call(this,this.P(this.D,this.G),this.K);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.K);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.K);this.S(a);this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,this.C),this.K);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.C);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.C);this.S(a);
+this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.C);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.C);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.G),this.C);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.C);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.C);this.S(a);this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,
+this.C),this.C);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.Y);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.Y);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.Y);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.Y);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.G),this.Y);this.S(a);
+this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.Y);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.Y);this.S(a);this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,this.C),this.Y);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.I);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.I);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,
+this.I+this.G&65535),this.I);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.I);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.G),this.I);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.I);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.I);this.S(a);this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,this.C),this.I);this.S(a);this.A-=this.B.aa},function(a){a=
+a.call(this,this.P(this.D,this.C+this.G&65535),this.G);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.G);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.G);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.G);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.G),this.G);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,
+this.F),this.G);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.G);this.S(a);this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,this.C),this.G);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G&65535),this.F);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.C+this.F&65535),this.F);this.S(a);this.A-=this.B.ja},function(a){a=a.call(this,this.P(this.N,this.I+this.G&65535),this.F);this.S(a);this.A-=this.B.ja},
+function(a){a=a.call(this,this.P(this.N,this.I+this.F&65535),this.F);this.S(a);this.A-=this.B.ia},function(a){a=a.call(this,this.P(this.D,this.G),this.F);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.F),this.F);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.L()),this.F);this.S(a);this.A-=this.B.za},function(a){a=a.call(this,this.P(this.D,this.C),this.F);this.S(a);this.A-=this.B.aa},function(a){a=a.call(this,this.P(this.D,this.C+this.G+this.M()&
65535),this.H);this.S(a);this.A-=this.B.W},function(a){a=a.call(this,this.P(this.D,this.C+this.F+this.M()&65535),this.H);this.S(a);this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,this.I+this.G+this.M()&65535),this.H);this.S(a);this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,this.I+this.F+this.M()&65535),this.H);this.S(a);this.A-=this.B.W},function(a){a=a.call(this,this.P(this.D,this.G+this.M()&65535),this.H);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.F+
this.M()&65535),this.H);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.N,this.I+this.M()&65535),this.H);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.C+this.M()&65535),this.H);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.C+this.G+this.M()&65535),this.J);this.S(a);this.A-=this.B.W},function(a){a=a.call(this,this.P(this.D,this.C+this.F+this.M()&65535),this.J);this.S(a);this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,
this.I+this.G+this.M()&65535),this.J);this.S(a);this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,this.I+this.F+this.M()&65535),this.J);this.S(a);this.A-=this.B.W},function(a){a=a.call(this,this.P(this.D,this.G+this.M()&65535),this.J);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.F+this.M()&65535),this.J);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.N,this.I+this.M()&65535),this.J);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,
@@ -193,20 +193,20 @@ this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.F+this.L()&65535)
this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,this.I+this.G+this.L()&65535),this.G);this.S(a);this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,this.I+this.F+this.L()&65535),this.G);this.S(a);this.A-=this.B.W},function(a){a=a.call(this,this.P(this.D,this.G+this.L()&65535),this.G);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.F+this.L()&65535),this.G);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.N,this.I+this.L()&65535),this.G);this.S(a);
this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.C+this.L()&65535),this.G);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.C+this.G+this.L()&65535),this.F);this.S(a);this.A-=this.B.W},function(a){a=a.call(this,this.P(this.D,this.C+this.F+this.L()&65535),this.F);this.S(a);this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,this.I+this.G+this.L()&65535),this.F);this.S(a);this.A-=this.B.X},function(a){a=a.call(this,this.P(this.N,this.I+this.F+this.L()&65535),
this.F);this.S(a);this.A-=this.B.W},function(a){a=a.call(this,this.P(this.D,this.G+this.L()&65535),this.F);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.F+this.L()&65535),this.F);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.N,this.I+this.L()&65535),this.F);this.S(a);this.A-=this.B.Q},function(a){a=a.call(this,this.P(this.D,this.C+this.L()&65535),this.F);this.S(a);this.A-=this.B.Q},kg,sg,Ag,Ig,Qg,Yg,fh,nh,lg,tg,Bg,Jg,Rg,Zg,gh,oh,mg,ug,Cg,Kg,Sg,$g,hh,
-ph,ng,vg,Dg,Lg,Tg,ah,ih,qh,og,wg,Eg,Mg,Ug,bh,jh,rh,pg,xg,Fg,Ng,Vg,ch,kh,sh,qg,yg,Gg,Og,Wg,dh,lh,th,rg,zg,Hg,Pg,Xg,eh,mh,uh],xh=[function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.G&65535));this.H=this.H&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.F&65535));this.H=this.H&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.H&255,this.U(this.N,this.I+this.G&65535));this.H=this.H&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.H&255,
-this.U(this.N,this.I+this.F&65535));this.H=this.H&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.H&255,this.U(this.D,this.G));this.H=this.H&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.H&255,this.U(this.D,this.F));this.H=this.H&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.H&255,this.U(this.D,this.L()));this.H=this.H&-256|a;this.A-=this.B.xa},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C));this.H=this.H&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,
-this.J&255,this.U(this.D,this.C+this.G&65535));this.J=this.J&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.J&255,this.U(this.D,this.C+this.F&65535));this.J=this.J&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.J&255,this.U(this.N,this.I+this.G&65535));this.J=this.J&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.J&255,this.U(this.N,this.I+this.F&65535));this.J=this.J&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.J&255,this.U(this.D,this.G));this.J=this.J&-256|
-a;this.A-=this.B.aa},function(a){a=a.call(this,this.J&255,this.U(this.D,this.F));this.J=this.J&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.J&255,this.U(this.D,this.L()));this.J=this.J&-256|a;this.A-=this.B.xa},function(a){a=a.call(this,this.J&255,this.U(this.D,this.C));this.J=this.J&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.K&255,this.U(this.D,this.C+this.G&65535));this.K=this.K&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.K&255,this.U(this.D,this.C+this.F&
-65535));this.K=this.K&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.K&255,this.U(this.N,this.I+this.G&65535));this.K=this.K&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.K&255,this.U(this.N,this.I+this.F&65535));this.K=this.K&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.K&255,this.U(this.D,this.G));this.K=this.K&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.K&255,this.U(this.D,this.F));this.K=this.K&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.K&
-255,this.U(this.D,this.L()));this.K=this.K&-256|a;this.A-=this.B.xa},function(a){a=a.call(this,this.K&255,this.U(this.D,this.C));this.K=this.K&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.C&255,this.U(this.D,this.C+this.G&65535));this.C=this.C&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.C&255,this.U(this.D,this.C+this.F&65535));this.C=this.C&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.C&255,this.U(this.N,this.I+this.G&65535));this.C=this.C&-256|a;this.A-=this.B.ia},
-function(a){a=a.call(this,this.C&255,this.U(this.N,this.I+this.F&65535));this.C=this.C&-256|a;this.A-=this.B.ha},function(a){a=a.call(this,this.C&255,this.U(this.D,this.G));this.C=this.C&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.C&255,this.U(this.D,this.F));this.C=this.C&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.C&255,this.U(this.D,this.L()));this.C=this.C&-256|a;this.A-=this.B.xa},function(a){a=a.call(this,this.C&255,this.U(this.D,this.C));this.C=this.C&-256|a;this.A-=
-this.B.aa},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.C+this.G&65535));this.H=this.H&255|a<<8;this.A-=this.B.ha},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.C+this.F&65535));this.H=this.H&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.H>>8,this.U(this.N,this.I+this.G&65535));this.H=this.H&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.H>>8,this.U(this.N,this.I+this.F&65535));this.H=this.H&255|a<<8;this.A-=this.B.ha},function(a){a=a.call(this,this.H>>
-8,this.U(this.D,this.G));this.H=this.H&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.F));this.H=this.H&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.L()));this.H=this.H&255|a<<8;this.A-=this.B.xa},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.C));this.H=this.H&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.C+this.G&65535));this.J=this.J&255|a<<8;this.A-=this.B.ha},function(a){a=a.call(this,
-this.J>>8,this.U(this.D,this.C+this.F&65535));this.J=this.J&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.J>>8,this.U(this.N,this.I+this.G&65535));this.J=this.J&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.J>>8,this.U(this.N,this.I+this.F&65535));this.J=this.J&255|a<<8;this.A-=this.B.ha},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.G));this.J=this.J&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.F));this.J=this.J&255|a<<8;this.A-=
-this.B.aa},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.L()));this.J=this.J&255|a<<8;this.A-=this.B.xa},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.C));this.J=this.J&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.C+this.G&65535));this.K=this.K&255|a<<8;this.A-=this.B.ha},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.C+this.F&65535));this.K=this.K&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.K>>8,this.U(this.N,this.I+this.G&
-65535));this.K=this.K&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.K>>8,this.U(this.N,this.I+this.F&65535));this.K=this.K&255|a<<8;this.A-=this.B.ha},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.G));this.K=this.K&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.F));this.K=this.K&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.L()));this.K=this.K&255|a<<8;this.A-=this.B.xa},function(a){a=a.call(this,this.K>>
-8,this.U(this.D,this.C));this.K=this.K&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C+this.G&65535));this.C=this.C&255|a<<8;this.A-=this.B.ha},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C+this.F&65535));this.C=this.C&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.C>>8,this.U(this.N,this.I+this.G&65535));this.C=this.C&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.C>>8,this.U(this.N,this.I+this.F&65535));this.C=this.C&255|a<<
-8;this.A-=this.B.ha},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.G));this.C=this.C&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.F));this.C=this.C&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.L()));this.C=this.C&255|a<<8;this.A-=this.B.xa},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C));this.C=this.C&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.G+this.M()&
+ph,ng,vg,Dg,Lg,Tg,ah,ih,qh,og,wg,Eg,Mg,Ug,bh,jh,rh,pg,xg,Fg,Ng,Vg,ch,kh,sh,qg,yg,Gg,Og,Wg,dh,lh,th,rg,zg,Hg,Pg,Xg,eh,mh,uh],xh=[function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.G&65535));this.H=this.H&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.F&65535));this.H=this.H&-256|a;this.A-=this.B.ja},function(a){a=a.call(this,this.H&255,this.U(this.N,this.I+this.G&65535));this.H=this.H&-256|a;this.A-=this.B.ja},function(a){a=a.call(this,this.H&255,
+this.U(this.N,this.I+this.F&65535));this.H=this.H&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.H&255,this.U(this.D,this.G));this.H=this.H&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.H&255,this.U(this.D,this.F));this.H=this.H&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.H&255,this.U(this.D,this.L()));this.H=this.H&-256|a;this.A-=this.B.za},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C));this.H=this.H&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,
+this.J&255,this.U(this.D,this.C+this.G&65535));this.J=this.J&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.J&255,this.U(this.D,this.C+this.F&65535));this.J=this.J&-256|a;this.A-=this.B.ja},function(a){a=a.call(this,this.J&255,this.U(this.N,this.I+this.G&65535));this.J=this.J&-256|a;this.A-=this.B.ja},function(a){a=a.call(this,this.J&255,this.U(this.N,this.I+this.F&65535));this.J=this.J&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.J&255,this.U(this.D,this.G));this.J=this.J&-256|
+a;this.A-=this.B.aa},function(a){a=a.call(this,this.J&255,this.U(this.D,this.F));this.J=this.J&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.J&255,this.U(this.D,this.L()));this.J=this.J&-256|a;this.A-=this.B.za},function(a){a=a.call(this,this.J&255,this.U(this.D,this.C));this.J=this.J&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.K&255,this.U(this.D,this.C+this.G&65535));this.K=this.K&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.K&255,this.U(this.D,this.C+this.F&
+65535));this.K=this.K&-256|a;this.A-=this.B.ja},function(a){a=a.call(this,this.K&255,this.U(this.N,this.I+this.G&65535));this.K=this.K&-256|a;this.A-=this.B.ja},function(a){a=a.call(this,this.K&255,this.U(this.N,this.I+this.F&65535));this.K=this.K&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.K&255,this.U(this.D,this.G));this.K=this.K&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.K&255,this.U(this.D,this.F));this.K=this.K&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.K&
+255,this.U(this.D,this.L()));this.K=this.K&-256|a;this.A-=this.B.za},function(a){a=a.call(this,this.K&255,this.U(this.D,this.C));this.K=this.K&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.C&255,this.U(this.D,this.C+this.G&65535));this.C=this.C&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.C&255,this.U(this.D,this.C+this.F&65535));this.C=this.C&-256|a;this.A-=this.B.ja},function(a){a=a.call(this,this.C&255,this.U(this.N,this.I+this.G&65535));this.C=this.C&-256|a;this.A-=this.B.ja},
+function(a){a=a.call(this,this.C&255,this.U(this.N,this.I+this.F&65535));this.C=this.C&-256|a;this.A-=this.B.ia},function(a){a=a.call(this,this.C&255,this.U(this.D,this.G));this.C=this.C&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.C&255,this.U(this.D,this.F));this.C=this.C&-256|a;this.A-=this.B.aa},function(a){a=a.call(this,this.C&255,this.U(this.D,this.L()));this.C=this.C&-256|a;this.A-=this.B.za},function(a){a=a.call(this,this.C&255,this.U(this.D,this.C));this.C=this.C&-256|a;this.A-=
+this.B.aa},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.C+this.G&65535));this.H=this.H&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.C+this.F&65535));this.H=this.H&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.H>>8,this.U(this.N,this.I+this.G&65535));this.H=this.H&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.H>>8,this.U(this.N,this.I+this.F&65535));this.H=this.H&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.H>>
+8,this.U(this.D,this.G));this.H=this.H&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.F));this.H=this.H&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.L()));this.H=this.H&255|a<<8;this.A-=this.B.za},function(a){a=a.call(this,this.H>>8,this.U(this.D,this.C));this.H=this.H&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.C+this.G&65535));this.J=this.J&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,
+this.J>>8,this.U(this.D,this.C+this.F&65535));this.J=this.J&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.J>>8,this.U(this.N,this.I+this.G&65535));this.J=this.J&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.J>>8,this.U(this.N,this.I+this.F&65535));this.J=this.J&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.G));this.J=this.J&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.F));this.J=this.J&255|a<<8;this.A-=
+this.B.aa},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.L()));this.J=this.J&255|a<<8;this.A-=this.B.za},function(a){a=a.call(this,this.J>>8,this.U(this.D,this.C));this.J=this.J&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.C+this.G&65535));this.K=this.K&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.C+this.F&65535));this.K=this.K&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.K>>8,this.U(this.N,this.I+this.G&
+65535));this.K=this.K&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.K>>8,this.U(this.N,this.I+this.F&65535));this.K=this.K&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.G));this.K=this.K&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.F));this.K=this.K&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.L()));this.K=this.K&255|a<<8;this.A-=this.B.za},function(a){a=a.call(this,this.K>>
+8,this.U(this.D,this.C));this.K=this.K&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C+this.G&65535));this.C=this.C&255|a<<8;this.A-=this.B.ia},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C+this.F&65535));this.C=this.C&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.C>>8,this.U(this.N,this.I+this.G&65535));this.C=this.C&255|a<<8;this.A-=this.B.ja},function(a){a=a.call(this,this.C>>8,this.U(this.N,this.I+this.F&65535));this.C=this.C&255|a<<
+8;this.A-=this.B.ia},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.G));this.C=this.C&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.F));this.C=this.C&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.L()));this.C=this.C&255|a<<8;this.A-=this.B.za},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C));this.C=this.C&255|a<<8;this.A-=this.B.aa},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.G+this.M()&
65535));this.H=this.H&-256|a;this.A-=this.B.W},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.F+this.M()&65535));this.H=this.H&-256|a;this.A-=this.B.X},function(a){a=a.call(this,this.H&255,this.U(this.N,this.I+this.G+this.M()&65535));this.H=this.H&-256|a;this.A-=this.B.X},function(a){a=a.call(this,this.H&255,this.U(this.N,this.I+this.F+this.M()&65535));this.H=this.H&-256|a;this.A-=this.B.W},function(a){a=a.call(this,this.H&255,this.U(this.D,this.G+this.M()&65535));this.H=this.H&-256|
a;this.A-=this.B.Q},function(a){a=a.call(this,this.H&255,this.U(this.D,this.F+this.M()&65535));this.H=this.H&-256|a;this.A-=this.B.Q},function(a){a=a.call(this,this.H&255,this.U(this.N,this.I+this.M()&65535));this.H=this.H&-256|a;this.A-=this.B.Q},function(a){a=a.call(this,this.H&255,this.U(this.D,this.C+this.M()&65535));this.H=this.H&-256|a;this.A-=this.B.Q},function(a){a=a.call(this,this.J&255,this.U(this.D,this.C+this.G+this.M()&65535));this.J=this.J&-256|a;this.A-=this.B.W},function(a){a=a.call(this,
this.J&255,this.U(this.D,this.C+this.F+this.M()&65535));this.J=this.J&-256|a;this.A-=this.B.X},function(a){a=a.call(this,this.J&255,this.U(this.N,this.I+this.G+this.M()&65535));this.J=this.J&-256|a;this.A-=this.B.X},function(a){a=a.call(this,this.J&255,this.U(this.N,this.I+this.F+this.M()&65535));this.J=this.J&-256|a;this.A-=this.B.W},function(a){a=a.call(this,this.J&255,this.U(this.D,this.G+this.M()&65535));this.J=this.J&-256|a;this.A-=this.B.Q},function(a){a=a.call(this,this.J&255,this.U(this.D,
@@ -237,17 +237,17 @@ this.I+this.F+this.L()&65535));this.J=this.J&255|a<<8;this.A-=this.B.W},function
this.B.W},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.G+this.L()&65535));this.K=this.K&255|a<<8;this.A-=this.B.Q},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.F+this.L()&65535));this.K=this.K&255|a<<8;this.A-=this.B.Q},function(a){a=a.call(this,this.K>>8,this.U(this.N,this.I+this.L()&65535));this.K=this.K&255|a<<8;this.A-=this.B.Q},function(a){a=a.call(this,this.K>>8,this.U(this.D,this.C+this.L()&65535));this.K=this.K&255|a<<8;this.A-=this.B.Q},function(a){a=a.call(this,this.C>>
8,this.U(this.D,this.C+this.G+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.W},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C+this.F+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.X},function(a){a=a.call(this,this.C>>8,this.U(this.N,this.I+this.G+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.X},function(a){a=a.call(this,this.C>>8,this.U(this.N,this.I+this.F+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.W},function(a){a=a.call(this,this.C>>8,this.U(this.D,
this.G+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.Q},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.F+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.Q},function(a){a=a.call(this,this.C>>8,this.U(this.N,this.I+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.Q},function(a){a=a.call(this,this.C>>8,this.U(this.D,this.C+this.L()&65535));this.C=this.C&255|a<<8;this.A-=this.B.Q},Ze,$e,af,bf,cf,df,ef,ff,gf,hf,jf,kf,lf,mf,nf,of,pf,qf,rf,sf,tf,uf,vf,wf,xf,yf,zf,Af,Bf,Cf,Df,
-Ef,Ff,Gf,Hf,If,Jf,Kf,Lf,Mf,Nf,Of,Pf,Qf,Rf,Sf,Tf,Uf,Vf,Wf,Xf,Yf,Zf,$f,ag,bg,cg,dg,eg,fg,gg,hg,ig,jg],O=[function(a){this.H=a.call(this,this.H,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.H=a.call(this,this.H,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ia},function(a){this.H=a.call(this,this.H,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.H=a.call(this,this.H,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ha},function(a){this.H=a.call(this,
-this.H,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.H=a.call(this,this.H,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.H=a.call(this,this.H,this.V(this.D,this.L()));this.A-=this.B.xa},function(a){this.H=a.call(this,this.H,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.J=a.call(this,this.J,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.J=a.call(this,this.J,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ia},function(a){this.J=a.call(this,
-this.J,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.J=a.call(this,this.J,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ha},function(a){this.J=a.call(this,this.J,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.J=a.call(this,this.J,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.J=a.call(this,this.J,this.V(this.D,this.L()));this.A-=this.B.xa},function(a){this.J=a.call(this,this.J,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.K=a.call(this,
-this.K,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.K=a.call(this,this.K,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ia},function(a){this.K=a.call(this,this.K,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.K=a.call(this,this.K,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ha},function(a){this.K=a.call(this,this.K,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.K=a.call(this,this.K,this.V(this.D,this.F));this.A-=this.B.aa},
-function(a){this.K=a.call(this,this.K,this.V(this.D,this.L()));this.A-=this.B.xa},function(a){this.K=a.call(this,this.K,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.C=a.call(this,this.C,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.C=a.call(this,this.C,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ia},function(a){this.C=a.call(this,this.C,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.C=a.call(this,this.C,this.V(this.N,this.I+this.F&
-65535));this.A-=this.B.ha},function(a){this.C=a.call(this,this.C,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.C=a.call(this,this.C,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.C=a.call(this,this.C,this.V(this.D,this.L()));this.A-=this.B.xa},function(a){this.C=a.call(this,this.C,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.C+
-this.F&65535));this.A-=this.B.ia},function(a){this.Y=a.call(this,this.Y,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.Y=a.call(this,this.Y,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ha},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.L()));this.A-=this.B.xa},function(a){this.Y=a.call(this,this.Y,this.V(this.D,
-this.C));this.A-=this.B.aa},function(a){this.I=a.call(this,this.I,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.I=a.call(this,this.I,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ia},function(a){this.I=a.call(this,this.I,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.I=a.call(this,this.I,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ha},function(a){this.I=a.call(this,this.I,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.I=a.call(this,
-this.I,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.I=a.call(this,this.I,this.V(this.D,this.L()));this.A-=this.B.xa},function(a){this.I=a.call(this,this.I,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.G=a.call(this,this.G,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.G=a.call(this,this.G,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ia},function(a){this.G=a.call(this,this.G,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.G=
-a.call(this,this.G,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ha},function(a){this.G=a.call(this,this.G,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.G=a.call(this,this.G,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.G=a.call(this,this.G,this.V(this.D,this.L()));this.A-=this.B.xa},function(a){this.G=a.call(this,this.G,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.F=a.call(this,this.F,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ha},function(a){this.F=
-a.call(this,this.F,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ia},function(a){this.F=a.call(this,this.F,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ia},function(a){this.F=a.call(this,this.F,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ha},function(a){this.F=a.call(this,this.F,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.F=a.call(this,this.F,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.F=a.call(this,this.F,this.V(this.D,this.L()));this.A-=this.B.xa},
+Ef,Ff,Gf,Hf,If,Jf,Kf,Lf,Mf,Nf,Of,Pf,Qf,Rf,Sf,Tf,Uf,Vf,Wf,Xf,Yf,Zf,$f,ag,bg,cg,dg,eg,fg,gg,hg,ig,jg],O=[function(a){this.H=a.call(this,this.H,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.H=a.call(this,this.H,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ja},function(a){this.H=a.call(this,this.H,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.H=a.call(this,this.H,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ia},function(a){this.H=a.call(this,
+this.H,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.H=a.call(this,this.H,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.H=a.call(this,this.H,this.V(this.D,this.L()));this.A-=this.B.za},function(a){this.H=a.call(this,this.H,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.J=a.call(this,this.J,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.J=a.call(this,this.J,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ja},function(a){this.J=a.call(this,
+this.J,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.J=a.call(this,this.J,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ia},function(a){this.J=a.call(this,this.J,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.J=a.call(this,this.J,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.J=a.call(this,this.J,this.V(this.D,this.L()));this.A-=this.B.za},function(a){this.J=a.call(this,this.J,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.K=a.call(this,
+this.K,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.K=a.call(this,this.K,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ja},function(a){this.K=a.call(this,this.K,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.K=a.call(this,this.K,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ia},function(a){this.K=a.call(this,this.K,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.K=a.call(this,this.K,this.V(this.D,this.F));this.A-=this.B.aa},
+function(a){this.K=a.call(this,this.K,this.V(this.D,this.L()));this.A-=this.B.za},function(a){this.K=a.call(this,this.K,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.C=a.call(this,this.C,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.C=a.call(this,this.C,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ja},function(a){this.C=a.call(this,this.C,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.C=a.call(this,this.C,this.V(this.N,this.I+this.F&
+65535));this.A-=this.B.ia},function(a){this.C=a.call(this,this.C,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.C=a.call(this,this.C,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.C=a.call(this,this.C,this.V(this.D,this.L()));this.A-=this.B.za},function(a){this.C=a.call(this,this.C,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.C+
+this.F&65535));this.A-=this.B.ja},function(a){this.Y=a.call(this,this.Y,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.Y=a.call(this,this.Y,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ia},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.Y=a.call(this,this.Y,this.V(this.D,this.L()));this.A-=this.B.za},function(a){this.Y=a.call(this,this.Y,this.V(this.D,
+this.C));this.A-=this.B.aa},function(a){this.I=a.call(this,this.I,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.I=a.call(this,this.I,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ja},function(a){this.I=a.call(this,this.I,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.I=a.call(this,this.I,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ia},function(a){this.I=a.call(this,this.I,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.I=a.call(this,
+this.I,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.I=a.call(this,this.I,this.V(this.D,this.L()));this.A-=this.B.za},function(a){this.I=a.call(this,this.I,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.G=a.call(this,this.G,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.G=a.call(this,this.G,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ja},function(a){this.G=a.call(this,this.G,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.G=
+a.call(this,this.G,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ia},function(a){this.G=a.call(this,this.G,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.G=a.call(this,this.G,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.G=a.call(this,this.G,this.V(this.D,this.L()));this.A-=this.B.za},function(a){this.G=a.call(this,this.G,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.F=a.call(this,this.F,this.V(this.D,this.C+this.G&65535));this.A-=this.B.ia},function(a){this.F=
+a.call(this,this.F,this.V(this.D,this.C+this.F&65535));this.A-=this.B.ja},function(a){this.F=a.call(this,this.F,this.V(this.N,this.I+this.G&65535));this.A-=this.B.ja},function(a){this.F=a.call(this,this.F,this.V(this.N,this.I+this.F&65535));this.A-=this.B.ia},function(a){this.F=a.call(this,this.F,this.V(this.D,this.G));this.A-=this.B.aa},function(a){this.F=a.call(this,this.F,this.V(this.D,this.F));this.A-=this.B.aa},function(a){this.F=a.call(this,this.F,this.V(this.D,this.L()));this.A-=this.B.za},
function(a){this.F=a.call(this,this.F,this.V(this.D,this.C));this.A-=this.B.aa},function(a){this.H=a.call(this,this.H,this.V(this.D,this.C+this.G+this.M()&65535));this.A-=this.B.W},function(a){this.H=a.call(this,this.H,this.V(this.D,this.C+this.F+this.M()&65535));this.A-=this.B.X},function(a){this.H=a.call(this,this.H,this.V(this.N,this.I+this.G+this.M()&65535));this.A-=this.B.X},function(a){this.H=a.call(this,this.H,this.V(this.N,this.I+this.F+this.M()&65535));this.A-=this.B.W},function(a){this.H=
a.call(this,this.H,this.V(this.D,this.G+this.M()&65535));this.A-=this.B.Q},function(a){this.H=a.call(this,this.H,this.V(this.D,this.F+this.M()&65535));this.A-=this.B.Q},function(a){this.H=a.call(this,this.H,this.V(this.N,this.I+this.M()&65535));this.A-=this.B.Q},function(a){this.H=a.call(this,this.H,this.V(this.D,this.C+this.M()&65535));this.A-=this.B.Q},function(a){this.J=a.call(this,this.J,this.V(this.D,this.C+this.G+this.M()&65535));this.A-=this.B.W},function(a){this.J=a.call(this,this.J,this.V(this.D,
this.C+this.F+this.M()&65535));this.A-=this.B.X},function(a){this.J=a.call(this,this.J,this.V(this.N,this.I+this.G+this.M()&65535));this.A-=this.B.X},function(a){this.J=a.call(this,this.J,this.V(this.N,this.I+this.F+this.M()&65535));this.A-=this.B.W},function(a){this.J=a.call(this,this.J,this.V(this.D,this.G+this.M()&65535));this.A-=this.B.Q},function(a){this.J=a.call(this,this.J,this.V(this.D,this.F+this.M()&65535));this.A-=this.B.Q},function(a){this.J=a.call(this,this.J,this.V(this.N,this.I+this.M()&
@@ -273,20 +273,20 @@ this.G+this.L()&65535));this.A-=this.B.Q},function(a){this.I=a.call(this,this.I,
this.A-=this.B.X},function(a){this.G=a.call(this,this.G,this.V(this.N,this.I+this.G+this.L()&65535));this.A-=this.B.X},function(a){this.G=a.call(this,this.G,this.V(this.N,this.I+this.F+this.L()&65535));this.A-=this.B.W},function(a){this.G=a.call(this,this.G,this.V(this.D,this.G+this.L()&65535));this.A-=this.B.Q},function(a){this.G=a.call(this,this.G,this.V(this.D,this.F+this.L()&65535));this.A-=this.B.Q},function(a){this.G=a.call(this,this.G,this.V(this.N,this.I+this.L()&65535));this.A-=this.B.Q},
function(a){this.G=a.call(this,this.G,this.V(this.D,this.C+this.L()&65535));this.A-=this.B.Q},function(a){this.F=a.call(this,this.F,this.V(this.D,this.C+this.G+this.L()&65535));this.A-=this.B.W},function(a){this.F=a.call(this,this.F,this.V(this.D,this.C+this.F+this.L()&65535));this.A-=this.B.X},function(a){this.F=a.call(this,this.F,this.V(this.N,this.I+this.G+this.L()&65535));this.A-=this.B.X},function(a){this.F=a.call(this,this.F,this.V(this.N,this.I+this.F+this.L()&65535));this.A-=this.B.W},function(a){this.F=
a.call(this,this.F,this.V(this.D,this.G+this.L()&65535));this.A-=this.B.Q},function(a){this.F=a.call(this,this.F,this.V(this.D,this.F+this.L()&65535));this.A-=this.B.Q},function(a){this.F=a.call(this,this.F,this.V(this.N,this.I+this.L()&65535));this.A-=this.B.Q},function(a){this.F=a.call(this,this.F,this.V(this.D,this.C+this.L()&65535));this.A-=this.B.Q},kg,lg,mg,ng,og,pg,qg,rg,sg,tg,ug,vg,wg,xg,yg,zg,Ag,Bg,Cg,Dg,Eg,Fg,Gg,Hg,Ig,Jg,Kg,Lg,Mg,Ng,Og,Pg,Qg,Rg,Sg,Tg,Ug,Vg,Wg,Xg,Yg,Zg,$g,ah,bh,ch,dh,eh,
-fh,gh,hh,ih,jh,kh,lh,mh,nh,oh,ph,qh,rh,sh,th,uh],yh=[function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[0].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[0].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ha},
-function(a,b){var c=a[0].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.xa},function(a,b){var c=a[0].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=
-this.B.ha},function(a,b){var c=a[1].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[1].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[1].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[1].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.O(this.D,this.F),
-b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.xa},function(a,b){var c=a[1].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[2].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,
-this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[2].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.xa},function(a,
-b){var c=a[2].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[3].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));
-this.R(c);this.A-=this.B.ha},function(a,b){var c=a[3].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.xa},function(a,b){var c=a[3].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.O(this.D,this.C+this.G&65535),
-b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[4].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[4].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[4].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[4].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=
-a[4].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.xa},function(a,b){var c=a[4].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[5].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},
-function(a,b){var c=a[5].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[5].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[5].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);
-this.A-=this.B.xa},function(a,b){var c=a[5].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[6].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.O(this.N,
-this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[6].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.xa},function(a,b){var c=a[6].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,
-this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[7].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ha},function(a,b){var c=a[7].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=
-this.B.aa},function(a,b){var c=a[7].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.xa},function(a,b){var c=a[7].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.G+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.W},function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.F+this.M()&
+fh,gh,hh,ih,jh,kh,lh,mh,nh,oh,ph,qh,rh,sh,th,uh],yh=[function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[0].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[0].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},
+function(a,b){var c=a[0].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.za},function(a,b){var c=a[0].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=
+this.B.ia},function(a,b){var c=a[1].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[1].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[1].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[1].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.O(this.D,this.F),
+b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.za},function(a,b){var c=a[1].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[2].call(this,
+this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[2].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.za},function(a,
+b){var c=a[2].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[3].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[3].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));
+this.R(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.za},function(a,b){var c=a[3].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.O(this.D,this.C+this.G&65535),
+b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[4].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[4].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[4].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[4].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=
+a[4].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.za},function(a,b){var c=a[4].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[5].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},
+function(a,b){var c=a[5].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[5].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[5].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);
+this.A-=this.B.za},function(a,b){var c=a[5].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[6].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[6].call(this,this.O(this.N,
+this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.za},function(a,b){var c=a[6].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,
+this.O(this.D,this.C+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.O(this.D,this.C+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[7].call(this,this.O(this.N,this.I+this.G&65535),b.call(this));this.R(c);this.A-=this.B.ja},function(a,b){var c=a[7].call(this,this.O(this.N,this.I+this.F&65535),b.call(this));this.R(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.O(this.D,this.G),b.call(this));this.R(c);this.A-=
+this.B.aa},function(a,b){var c=a[7].call(this,this.O(this.D,this.F),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.O(this.D,this.L()),b.call(this));this.R(c);this.A-=this.B.za},function(a,b){var c=a[7].call(this,this.O(this.D,this.C),b.call(this));this.R(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.G+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.W},function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.F+this.M()&
65535),b.call(this));this.R(c);this.A-=this.B.X},function(a,b){var c=a[0].call(this,this.O(this.N,this.I+this.G+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.X},function(a,b){var c=a[0].call(this,this.O(this.N,this.I+this.F+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.W},function(a,b){var c=a[0].call(this,this.O(this.D,this.G+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.Q},function(a,b){var c=a[0].call(this,this.O(this.D,this.F+this.M()&65535),b.call(this));this.R(c);
this.A-=this.B.Q},function(a,b){var c=a[0].call(this,this.O(this.N,this.I+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.Q},function(a,b){var c=a[0].call(this,this.O(this.D,this.C+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.Q},function(a,b){var c=a[1].call(this,this.O(this.D,this.C+this.G+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.W},function(a,b){var c=a[1].call(this,this.O(this.D,this.C+this.F+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.X},function(a,b){var c=
a[1].call(this,this.O(this.N,this.I+this.G+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.X},function(a,b){var c=a[1].call(this,this.O(this.N,this.I+this.F+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.W},function(a,b){var c=a[1].call(this,this.O(this.D,this.G+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.Q},function(a,b){var c=a[1].call(this,this.O(this.D,this.F+this.M()&65535),b.call(this));this.R(c);this.A-=this.B.Q},function(a,b){var c=a[1].call(this,this.O(this.N,this.I+
@@ -327,20 +327,20 @@ this.H&-256|c},function(a,b){var c=a[5].call(this,this.J&255,b.call(this));this.
c<<8},function(a,b){var c=a[5].call(this,this.C>>8,b.call(this));this.C=this.C&255|c<<8},function(a,b){var c=a[6].call(this,this.H&255,b.call(this));this.H=this.H&-256|c},function(a,b){var c=a[6].call(this,this.J&255,b.call(this));this.J=this.J&-256|c},function(a,b){var c=a[6].call(this,this.K&255,b.call(this));this.K=this.K&-256|c},function(a,b){var c=a[6].call(this,this.C&255,b.call(this));this.C=this.C&-256|c},function(a,b){var c=a[6].call(this,this.H>>8,b.call(this));this.H=this.H&255|c<<8},function(a,
b){var c=a[6].call(this,this.J>>8,b.call(this));this.J=this.J&255|c<<8},function(a,b){var c=a[6].call(this,this.K>>8,b.call(this));this.K=this.K&255|c<<8},function(a,b){var c=a[6].call(this,this.C>>8,b.call(this));this.C=this.C&255|c<<8},function(a,b){var c=a[7].call(this,this.H&255,b.call(this));this.H=this.H&-256|c},function(a,b){var c=a[7].call(this,this.J&255,b.call(this));this.J=this.J&-256|c},function(a,b){var c=a[7].call(this,this.K&255,b.call(this));this.K=this.K&-256|c},function(a,b){var c=
a[7].call(this,this.C&255,b.call(this));this.C=this.C&-256|c},function(a,b){var c=a[7].call(this,this.H>>8,b.call(this));this.H=this.H&255|c<<8},function(a,b){var c=a[7].call(this,this.J>>8,b.call(this));this.J=this.J&255|c<<8},function(a,b){var c=a[7].call(this,this.K>>8,b.call(this));this.K=this.K&255|c<<8},function(a,b){var c=a[7].call(this,this.C>>8,b.call(this));this.C=this.C&255|c<<8}],zh=[function(a,b){var c=a[0].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=
-this.B.ha},function(a,b){var c=a[0].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[0].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.P(this.D,this.F),
-b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.xa},function(a,b){var c=a[0].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[1].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[1].call(this,
-this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[1].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[1].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.xa},function(a,
-b){var c=a[1].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[2].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));
-this.S(c);this.A-=this.B.ha},function(a,b){var c=a[2].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.xa},function(a,b){var c=a[2].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.P(this.D,this.C+this.G&65535),
-b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[3].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[3].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=
-a[3].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.xa},function(a,b){var c=a[3].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[4].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},
-function(a,b){var c=a[4].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[4].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[4].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);
-this.A-=this.B.xa},function(a,b){var c=a[4].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[5].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[5].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[5].call(this,this.P(this.N,
-this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[5].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.xa},function(a,b){var c=a[5].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,
-this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[6].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[6].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=
-this.B.aa},function(a,b){var c=a[6].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.xa},function(a,b){var c=a[6].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[7].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));
-this.S(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ha},function(a,b){var c=a[7].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.P(this.D,
-this.L()),b.call(this));this.S(c);this.A-=this.B.xa},function(a,b){var c=a[7].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.P(this.D,this.C+this.G+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.W},function(a,b){var c=a[0].call(this,this.P(this.D,this.C+this.F+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.X},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.G+this.M()&65535),b.call(this));this.S(c);this.A-=
+this.B.ia},function(a,b){var c=a[0].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[0].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.P(this.D,this.F),
+b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.za},function(a,b){var c=a[0].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[1].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[1].call(this,
+this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[1].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[1].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[1].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.za},function(a,
+b){var c=a[1].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[2].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[2].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));
+this.S(c);this.A-=this.B.ia},function(a,b){var c=a[2].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[2].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.za},function(a,b){var c=a[2].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.P(this.D,this.C+this.G&65535),
+b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[3].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[3].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[3].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=
+a[3].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[3].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.za},function(a,b){var c=a[3].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[4].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ja},
+function(a,b){var c=a[4].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[4].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[4].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[4].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);
+this.A-=this.B.za},function(a,b){var c=a[4].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[5].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[5].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[5].call(this,this.P(this.N,
+this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[5].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[5].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.za},function(a,b){var c=a[5].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,
+this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[6].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[6].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[6].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=
+this.B.aa},function(a,b){var c=a[6].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[6].call(this,this.P(this.D,this.L()),b.call(this));this.S(c);this.A-=this.B.za},function(a,b){var c=a[6].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.P(this.D,this.C+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.P(this.D,this.C+this.F&65535),b.call(this));
+this.S(c);this.A-=this.B.ja},function(a,b){var c=a[7].call(this,this.P(this.N,this.I+this.G&65535),b.call(this));this.S(c);this.A-=this.B.ja},function(a,b){var c=a[7].call(this,this.P(this.N,this.I+this.F&65535),b.call(this));this.S(c);this.A-=this.B.ia},function(a,b){var c=a[7].call(this,this.P(this.D,this.G),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.P(this.D,this.F),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[7].call(this,this.P(this.D,
+this.L()),b.call(this));this.S(c);this.A-=this.B.za},function(a,b){var c=a[7].call(this,this.P(this.D,this.C),b.call(this));this.S(c);this.A-=this.B.aa},function(a,b){var c=a[0].call(this,this.P(this.D,this.C+this.G+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.W},function(a,b){var c=a[0].call(this,this.P(this.D,this.C+this.F+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.X},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.G+this.M()&65535),b.call(this));this.S(c);this.A-=
this.B.X},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.F+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.W},function(a,b){var c=a[0].call(this,this.P(this.D,this.G+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.Q},function(a,b){var c=a[0].call(this,this.P(this.D,this.F+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.Q},function(a,b){var c=a[0].call(this,this.P(this.N,this.I+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.Q},function(a,b){var c=a[0].call(this,
this.P(this.D,this.C+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.Q},function(a,b){var c=a[1].call(this,this.P(this.D,this.C+this.G+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.W},function(a,b){var c=a[1].call(this,this.P(this.D,this.C+this.F+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.X},function(a,b){var c=a[1].call(this,this.P(this.N,this.I+this.G+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.X},function(a,b){var c=a[1].call(this,this.P(this.N,this.I+this.F+
this.M()&65535),b.call(this));this.S(c);this.A-=this.B.W},function(a,b){var c=a[1].call(this,this.P(this.D,this.G+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.Q},function(a,b){var c=a[1].call(this,this.P(this.D,this.F+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.Q},function(a,b){var c=a[1].call(this,this.P(this.N,this.I+this.M()&65535),b.call(this));this.S(c);this.A-=this.B.Q},function(a,b){var c=a[1].call(this,this.P(this.D,this.C+this.M()&65535),b.call(this));this.S(c);this.A-=
@@ -377,292 +377,292 @@ b.call(this))},function(a,b){this.K=a[3].call(this,this.K,b.call(this))},functio
this.K,b.call(this))},function(a,b){this.C=a[4].call(this,this.C,b.call(this))},function(a,b){this.Y=a[4].call(this,this.Y,b.call(this))},function(a,b){this.I=a[4].call(this,this.I,b.call(this))},function(a,b){this.G=a[4].call(this,this.G,b.call(this))},function(a,b){this.F=a[4].call(this,this.F,b.call(this))},function(a,b){this.H=a[5].call(this,this.H,b.call(this))},function(a,b){this.J=a[5].call(this,this.J,b.call(this))},function(a,b){this.K=a[5].call(this,this.K,b.call(this))},function(a,b){this.C=
a[5].call(this,this.C,b.call(this))},function(a,b){this.Y=a[5].call(this,this.Y,b.call(this))},function(a,b){this.I=a[5].call(this,this.I,b.call(this))},function(a,b){this.G=a[5].call(this,this.G,b.call(this))},function(a,b){this.F=a[5].call(this,this.F,b.call(this))},function(a,b){this.H=a[6].call(this,this.H,b.call(this))},function(a,b){this.J=a[6].call(this,this.J,b.call(this))},function(a,b){this.K=a[6].call(this,this.K,b.call(this))},function(a,b){this.C=a[6].call(this,this.C,b.call(this))},
function(a,b){this.$|=512;this.Y=a[6].call(this,this.Y,b.call(this))},function(a,b){this.I=a[6].call(this,this.I,b.call(this))},function(a,b){this.G=a[6].call(this,this.G,b.call(this))},function(a,b){this.F=a[6].call(this,this.F,b.call(this))},function(a,b){this.H=a[7].call(this,this.H,b.call(this))},function(a,b){this.J=a[7].call(this,this.J,b.call(this))},function(a,b){this.K=a[7].call(this,this.K,b.call(this))},function(a,b){this.C=a[7].call(this,this.C,b.call(this))},function(a,b){this.Y=a[7].call(this,
-this.Y,b.call(this))},function(a,b){this.I=a[7].call(this,this.I,b.call(this))},function(a,b){this.G=a[7].call(this,this.G,b.call(this))},function(a,b){this.F=a[7].call(this,this.F,b.call(this))}],Bh=[function(){var a=this.fa();16>(a&56)&&(this.$|=1);zh[a].call(this,cd,re)},function(){var a=this.fa();a&16||(this.$|=1);zh[a].call(this,Ah,re)},function(){O[this.fa()].call(this,Qe)},function(){O[this.fa()].call(this,Ue)},N,function(){Xe.call(this,this.ta(2054));this.F=this.ta(2086);this.G=this.ta(2088);
-this.I=this.ta(2090);this.Y=this.ta(2092);this.C=this.ta(2094);this.K=this.ta(2096);this.J=this.ta(2098);this.H=this.ta(2100);dc.call(this.Wa,this.ta(2084),2102);dc.call(this.ua,this.ta(2082),2108);dc.call(this.rb,this.ta(2080),2114);dc.call(this.vb,this.ta(2078),2120);this.ag=this.ua.Pb;Tc(this,this.ta(2072));K(this,this.ta(2074));this.xc=this.ta(2126)|this.ta(2128)<<16;this.ue=this.xc+this.ta(2130);this.Yc.En(this.ta(2076),2132);this.Dc=this.ta(2138)|this.ta(2140)<<16;this.Vd=this.Dc+this.ta(2142);
-this.Qe.En(this.ta(2070),2144);this.A-=195},N,N,N,N,N,sc,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
-N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N],dd=[function(){this.A-=2+(0>this.ja?0:1);return this.Yc.pa},function(){this.A-=2+(0>this.ja?0:1);return this.Qe.pa},function(a){this.$|=2;this.Yc.load(a);this.A-=17+(0>this.ja?0:2);return a},function(a){this.$|=2;this.Qe.load(a);this.A-=17+(0>this.ja?0:2);return a},function(a){this.$|=2;this.A-=14+(0>this.ja?0:2);if(0<=this.Lb.load(a,!0)&&2048!=(this.Lb.ab&2560)&&(3072==(this.Lb.ab&3072)||this.Lb.Pb>=(this.ua.pa&3)&&this.Lb.Pb>=(a&3)))return zd(this),a;
-ud(this);return a},function(a){this.$|=2;this.A-=14+(0>this.ja?0:2);if(0<=this.Lb.load(a,!0)&&512==(this.Lb.ab&2560)&&this.Lb.Pb>=(this.ua.pa&3)&&this.Lb.Pb>=(a&3))return zd(this),a;ud(this);return a},M,M],ed=[Lc,Lc,Lc,Lc,Lc,Lc,M,M],cd=ed,Ah=[function(a){0>this.ja?sc.call(this):(a=this.ue-this.xc,this.Zc(this.ja+2,this.xc),this.Zc(this.ja+4,65280|this.xc>>16),this.A-=11);return a},function(a){0>this.ja?sc.call(this):(a=this.Vd-this.Dc,this.Zc(this.ja+2,this.Dc),this.Zc(this.ja+4,65280|this.Dc>>16),
-this.A-=12);return a},function(a){0>this.ja?sc.call(this):(this.xc=this.ta(this.ja+2)|this.tb(this.ja+4)<<16,this.ue=this.xc+a,this.$|=2,this.A-=11);return a},function(a){0>this.ja?sc.call(this):(this.Dc=this.ta(this.ja+2)|this.tb(this.ja+4)<<16,this.Vd=this.Dc+a,this.$|=2,this.A-=12);return a},function(){this.A-=2+(0>this.ja?0:1);return this.Ac},M,function(a){Xe.call(this,a);this.A-=0>this.ja?3:6;this.$|=2;return a},M];function Oc(){Bh[this.fa()].call(this)}
-function Qc(){L(this,this.Y);this.A-=this.B.pc}function tc(){var a=this.Y;L(this,this.H);L(this,this.J);L(this,this.K);L(this,this.C);L(this,a);L(this,this.I);L(this,this.G);L(this,this.F);this.A-=this.B.xl}function uc(){this.F=this.Ja();this.G=this.Ja();this.I=this.Ja();this.Y+=2;this.C=this.Ja();this.K=this.Ja();this.J=this.Ja();this.H=this.Ja();this.A-=this.B.vl}function vc(){O[this.fa()].call(this,Oe)}function Pc(){wh[this.fa()].call(this,Pe)}function wc(){L(this,this.L());this.A-=this.B.pc}
-function xc(){O[this.fa()].call(this,Je)}function yc(){L(this,this.fa());this.A-=this.B.pc}function zc(){O[this.fa()].call(this,Ie)}function Ac(){var a=1,b=0,c=5;this.ya&192&&(a=this.J,b=1,this.ya&256&&(c=4));if(a--){var d=vb(this.oa,this.K,this.Da-b-1);this.Jd(this.Wa.fc(this.F,0),d);this.F=this.F+(this.za&1024?-1:1)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}}
-function Bc(){var a=1,b=0,c=5;this.ya&192&&(a=this.J,b=1,this.ya&256&&(c=4));if(a--){var d=this.Da-b-1,d=vb(this.oa,this.K,d)|vb(this.oa,this.K,d)<<8;this.Zc(this.Wa.fc(this.F,1),d);this.F=this.F+(this.za&1024?-2:2)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}}
-function Cc(){var a=1,b=0,c=5;this.ya&192&&(a=this.J,b=1,this.ya&256&&(c=4));if(a--){var d=this.tb(this.vb.cd(this.G,0));this.G=this.G+(this.za&1024?-1:1)&65535;this.A-=c;this.J-=b;zb(this.oa,this.K,d,this.Da-b-1);a&&(ld(this,-2),this.$|=256)}}
-function Dc(){var a=1,b=0,c=5;this.ya&192&&(a=this.J,b=1,this.ya&256&&(c=4));if(a--){var d=this.ta(this.vb.cd(this.G,1));this.G=this.G+(this.za&1024?-2:2)&65535;this.A-=c;this.J-=b;b=this.Da-b-1;zb(this.oa,this.K,d&255,b);zb(this.oa,this.K,d>>8,b);a&&(ld(this,-2),this.$|=256)}}function Ch(){var a=this.M();rd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Dh(){var a=this.M();rd(this)?this.A-=this.B.Vb:(K(this,this.ra+a),this.A-=this.B.Ub)}
-function Eh(){var a=this.M();md(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Fh(){var a=this.M();md(this)?this.A-=this.B.Vb:(K(this,this.ra+a),this.A-=this.B.Ub)}function Gh(){var a=this.M();pd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Hh(){var a=this.M();pd(this)?this.A-=this.B.Vb:(K(this,this.ra+a),this.A-=this.B.Ub)}function Ih(){var a=this.M();md(this)||pd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}
-function Jh(){var a=this.M();md(this)||pd(this)?this.A-=this.B.Vb:(K(this,this.ra+a),this.A-=this.B.Ub)}function Kh(){var a=this.M();qd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Lh(){var a=this.M();qd(this)?this.A-=this.B.Vb:(K(this,this.ra+a),this.A-=this.B.Ub)}function Mh(){var a=this.M();nd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Nh(){var a=this.M();nd(this)?this.A-=this.B.Vb:(K(this,this.ra+a),this.A-=this.B.Ub)}
-function Oh(){var a=this.M();!qd(this)!=!rd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Ph(){var a=this.M();!qd(this)==!rd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Qh(){var a=this.M();pd(this)||!qd(this)!=!rd(this)?(K(this,this.ra+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Rh(){var a=this.M();pd(this)||!qd(this)!=!rd(this)?this.A-=this.B.Vb:(K(this,this.ra+a),this.A-=this.B.Ub)}
-function Sh(){yh[this.fa()].call(this,te,this.fa);this.A-=0>this.Ka?1:this.B.zh}function Ec(){yh[this.fa()].call(this,Ce,qe)}function Fc(){zh[this.fa()].call(this,De,qe)}function Th(){var a=this.L();K(this,this.Ja());this.Y=this.Y+a&65535;this.A-=this.B.Cl}function Uh(){K(this,this.Ja());this.A-=this.B.zl}
-function Gc(){var a=this.L(),b=this.fa()&31;this.A-=11;L(this,this.I);var c=this.Y;if(0>8,c,d=od(this);9<(a&15)||d?(a=a+6&15,b=b+1&255,c=d=!0):c=d=!1;this.H=b<<8|(this.Z=a);this.ea=65536;c&&(this.Z|=this.ea);d?yd(this):td(this);this.A-=this.B.Je},function(){vh[this.fa()].call(this,Rd)},function(){wh[this.fa()].call(this,Zd)},function(){xh[this.fa()].call(this,Rd)},function(){O[this.fa()].call(this,Zd)},function(){this.H=this.H&-256|Rd.call(this,this.H&255,this.fa());this.A--},function(){this.H=Zd.call(this,this.H,this.L());this.A--},
-function(){this.$|=20;this.D=this.N=this.vb;this.A-=this.B.ke},function(){var a=this.H&255,b=this.H>>8,c,d=od(this);9<(a&15)||d?(a=a-6&15,b=b-1&255,c=d=!0):c=d=!1;this.H=b<<8|(this.Z=a);this.ea=65536;c&&(this.Z|=this.ea);d?yd(this):td(this);this.A-=this.B.Je},function(){this.na=this.H;this.H=(this.ka=this.H+1)&65535;this.Z=this.H|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.J;this.J=(this.ka=this.J+1)&65535;this.Z=this.J|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=
-2},function(){this.na=this.K;this.K=(this.ka=this.K+1)&65535;this.Z=this.K|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.C;this.C=(this.ka=this.C+1)&65535;this.Z=this.C|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.Y;this.Y=(this.ka=this.Y+1)&65535;this.Z=this.Y|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.I;this.I=(this.ka=this.I+1)&65535;this.Z=this.I|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=
-this.G;this.G=(this.ka=this.G+1)&65535;this.Z=this.G|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.F;this.F=(this.ka=this.F+1)&65535;this.Z=this.F|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.H;this.H=(this.ka=this.H-1)&65535;this.Z=this.H|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.J;this.J=(this.ka=this.J-1)&65535;this.Z=this.J|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.K;this.K=
-(this.ka=this.K-1)&65535;this.Z=this.K|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.C;this.C=(this.ka=this.C-1)&65535;this.Z=this.C|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.Y;this.Y=(this.ka=this.Y-1)&65535;this.Z=this.Y|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.I;this.I=(this.ka=this.I-1)&65535;this.Z=this.I|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.G;this.G=(this.ka=this.G-
-1)&65535;this.Z=this.G|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){this.na=this.F;this.F=(this.ka=this.F-1)&65535;this.Z=this.F|(this.Z&this.ea?1:0)<<16;this.ea=65536;this.A-=2},function(){L(this,this.H);this.A-=this.B.pc},function(){L(this,this.J);this.A-=this.B.pc},function(){L(this,this.K);this.A-=this.B.pc},function(){L(this,this.C);this.A-=this.B.pc},function(){L(this,this.Y-2&65535);this.A-=this.B.pc},function(){L(this,this.I);this.A-=this.B.pc},function(){L(this,this.G);this.A-=
-this.B.pc},function(){L(this,this.F);this.A-=this.B.pc},function(){this.H=this.Ja();this.A-=this.B.hc},function(){this.J=this.Ja();this.A-=this.B.hc},function(){this.K=this.Ja();this.A-=this.B.hc},function(){this.C=this.Ja();this.A-=this.B.hc},function(){this.Y=this.Ja();this.A-=this.B.hc},function(){this.I=this.Ja();this.A-=this.B.hc},function(){this.G=this.Ja();this.A-=this.B.hc},function(){this.F=this.Ja();this.A-=this.B.hc},Ch,Dh,Eh,Fh,Gh,Hh,Ih,Jh,Kh,Lh,Mh,Nh,Oh,Ph,Qh,Rh,Ch,Dh,Eh,Fh,Gh,Hh,Ih,
-Jh,Kh,Lh,Mh,Nh,Oh,Ph,Qh,Rh,Sh,function(){zh[this.fa()].call(this,ue,this.L);this.A-=0>this.Ka?1:this.B.zh},Sh,function(){zh[this.fa()].call(this,ue,this.M);this.A-=0>this.Ka?1:this.B.zh},function(){vh[this.fa()].call(this,Ge)},function(){wh[this.fa()].call(this,He)},function(){xh[this.Og=this.fa()].call(this,Ve)},function(){O[this.Og=this.fa()].call(this,We)},function(){this.$|=1;vh[this.fa()].call(this,Ee)},function(){this.$|=1;wh[this.fa()].call(this,Ee)},function(){xh[this.fa()].call(this,Ee)},
-function(){O[this.fa()].call(this,Ee)},function(){var a=this.fa();switch((a&56)>>3){case 0:this.Cb=this.Wa.pa;break;case 1:this.Cb=this.ua.pa;break;case 2:this.Cb=this.rb.pa;break;case 3:this.Cb=this.vb.pa;break;default:N.call(this);return}this.$|=1;wh[a].call(this,Fe)},function(){this.$|=1;this.D=this.N=this.Ul;O[this.fa()].call(this,Le)},function(){var a,b=this.fa(),c=(b&56)>>3;switch(c){case 0:a=this.H;break;case 2:a=this.K;break;case 3:a=this.C;break;default:if(80286<=this.Ga){sc.call(this);return}switch(c){case 1:a=
-this.J;break;case 4:a=this.Y;break;case 5:a=this.I;break;case 6:a=this.G;break;case 7:a=this.F}}O[b].call(this,Ee);switch(c){case 0:kd(this,this.H);this.H=a;break;case 1:hd(this,this.J);this.J=a;break;case 2:jd(this,this.K);this.K=a;break;case 3:id(this,this.C);this.C=a;break;case 4:kd(this,this.Y);this.Y=a;break;case 5:hd(this,this.I);this.I=a;break;case 6:jd(this,this.G);this.G=a;break;case 7:id(this,this.F),this.F=a}},function(){this.$|=1;zh[this.fa()].call(this,ve,this.Ja)},function(){this.A-=
+this.Y,b.call(this))},function(a,b){this.I=a[7].call(this,this.I,b.call(this))},function(a,b){this.G=a[7].call(this,this.G,b.call(this))},function(a,b){this.F=a[7].call(this,this.F,b.call(this))}],Bh=[function(){var a=this.ga();16>(a&56)&&(this.$|=1);zh[a].call(this,cd,se)},function(){var a=this.ga();a&16||(this.$|=1);zh[a].call(this,Ah,se)},function(){O[this.ga()].call(this,Re)},function(){O[this.ga()].call(this,Ve)},N,function(){this.wa.Jc?hc.call(this,13,0,!0):(Ye.call(this,this.ta(2054)),this.F=
+this.ta(2086),this.G=this.ta(2088),this.I=this.ta(2090),this.Y=this.ta(2092),this.C=this.ta(2094),this.K=this.ta(2096),this.J=this.ta(2098),this.H=this.ta(2100),mc(this.Za,this.ta(2084),2102),mc(this.wa,this.ta(2082),2108),mc(this.tb,this.ta(2080),2114),mc(this.yb,this.ta(2078),2120),Tc(this,this.ta(2072)),K(this,this.ta(2074)),this.xc=this.ta(2126)|this.ta(2128)<<16,this.xe=this.xc+this.ta(2130),mc(this.ad,this.ta(2076),2132),this.Ec=this.ta(2138)|this.ta(2140)<<16,this.Yd=this.Ec+this.ta(2142),
+mc(this.Te,this.ta(2070),2144),this.A-=195)},N,N,N,N,N,sc,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,
+N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N],dd=[function(){this.A-=2+(0>this.ka?0:1);return this.ad.sa},function(){this.A-=2+(0>this.ka?0:1);return this.Te.sa},function(a){this.$|=2;this.ad.load(a);this.A-=17+(0>this.ka?0:2);return a},function(a){this.$|=2;this.Te.load(a);this.A-=17+(0>this.ka?0:2);return a},function(a){this.$|=2;this.A-=14+(0>this.ka?0:2);if(0<=this.Mb.load(a,!0)&&2048!=(this.Mb.Oa&2560)&&(this.Mb.zc>=this.wa.Jc&&this.Mb.zc>=(a&3)||7168==(this.Mb.Oa&7168)))return zd(this),a;ud(this);
+return a},function(a){this.$|=2;this.A-=14+(0>this.ka?0:2);if(0<=this.Mb.load(a,!0)&&512==(this.Mb.Oa&2560)&&this.Mb.zc>=this.wa.Jc&&this.Mb.zc>=(a&3))return zd(this),a;ud(this);return a},M,M],ed=[Lc,Lc,Lc,Lc,Lc,Lc,M,M],cd=ed,Ah=[function(a){0>this.ka?sc.call(this):(a=this.xe-this.xc,this.bd(this.ka+2,this.xc),this.bd(this.ka+4,65280|this.xc>>16),this.A-=11);return a},function(a){0>this.ka?sc.call(this):(a=this.Yd-this.Ec,this.bd(this.ka+2,this.Ec),this.bd(this.ka+4,65280|this.Ec>>16),this.A-=12);
+return a},function(a){0>this.ka?sc.call(this):(this.xc=this.ta(this.ka+2)|this.vb(this.ka+4)<<16,this.xe=this.xc+a,this.$|=2,this.A-=11);return a},function(a){0>this.ka?sc.call(this):(this.Ec=this.ta(this.ka+2)|this.vb(this.ka+4)<<16,this.Yd=this.Ec+a,this.$|=2,this.A-=12);return a},function(){this.A-=2+(0>this.ka?0:1);return this.Bc},M,function(a){Ye.call(this,a);this.A-=0>this.ka?3:6;this.$|=2;return a},M];function Oc(){Bh[this.ga()].call(this)}function Qc(){L(this,this.Y);this.A-=this.B.pc}
+function tc(){var a=this.Y;L(this,this.H);L(this,this.J);L(this,this.K);L(this,this.C);L(this,a);L(this,this.I);L(this,this.G);L(this,this.F);this.A-=this.B.Bl}function uc(){this.F=this.La();this.G=this.La();this.I=this.La();this.Y+=2;this.C=this.La();this.K=this.La();this.J=this.La();this.H=this.La();this.A-=this.B.zl}function vc(){O[this.ga()].call(this,Pe)}function Pc(){wh[this.ga()].call(this,Qe)}function wc(){L(this,this.L());this.A-=this.B.pc}function xc(){O[this.ga()].call(this,Ke)}
+function yc(){L(this,this.ga());this.A-=this.B.pc}function zc(){O[this.ga()].call(this,Je)}function Ac(){var a=1,b=0,c=5;this.Aa&192&&(a=this.J,b=1,this.Aa&256&&(c=4));if(a--){var d=vb(this.qa,this.K,this.Fa-b-1);this.Md(this.Za.fc(this.F,0),d);this.F=this.F+(this.Ba&1024?-1:1)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}}
+function Bc(){var a=1,b=0,c=5;this.Aa&192&&(a=this.J,b=1,this.Aa&256&&(c=4));if(a--){var d=this.Fa-b-1,d=vb(this.qa,this.K,d)|vb(this.qa,this.K,d)<<8;this.bd(this.Za.fc(this.F,1),d);this.F=this.F+(this.Ba&1024?-2:2)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}}
+function Cc(){var a=1,b=0,c=5;this.Aa&192&&(a=this.J,b=1,this.Aa&256&&(c=4));if(a--){var d=this.vb(this.yb.gd(this.G,0));this.G=this.G+(this.Ba&1024?-1:1)&65535;this.A-=c;this.J-=b;zb(this.qa,this.K,d,this.Fa-b-1);a&&(ld(this,-2),this.$|=256)}}
+function Dc(){var a=1,b=0,c=5;this.Aa&192&&(a=this.J,b=1,this.Aa&256&&(c=4));if(a--){var d=this.ta(this.yb.gd(this.G,1));this.G=this.G+(this.Ba&1024?-2:2)&65535;this.A-=c;this.J-=b;b=this.Fa-b-1;zb(this.qa,this.K,d&255,b);zb(this.qa,this.K,d>>8,b);a&&(ld(this,-2),this.$|=256)}}function Ch(){var a=this.M();rd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Dh(){var a=this.M();rd(this)?this.A-=this.B.Vb:(K(this,this.ua+a),this.A-=this.B.Ub)}
+function Eh(){var a=this.M();md(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Fh(){var a=this.M();md(this)?this.A-=this.B.Vb:(K(this,this.ua+a),this.A-=this.B.Ub)}function Gh(){var a=this.M();pd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Hh(){var a=this.M();pd(this)?this.A-=this.B.Vb:(K(this,this.ua+a),this.A-=this.B.Ub)}function Ih(){var a=this.M();md(this)||pd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}
+function Jh(){var a=this.M();md(this)||pd(this)?this.A-=this.B.Vb:(K(this,this.ua+a),this.A-=this.B.Ub)}function Kh(){var a=this.M();qd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Lh(){var a=this.M();qd(this)?this.A-=this.B.Vb:(K(this,this.ua+a),this.A-=this.B.Ub)}function Mh(){var a=this.M();nd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Nh(){var a=this.M();nd(this)?this.A-=this.B.Vb:(K(this,this.ua+a),this.A-=this.B.Ub)}
+function Oh(){var a=this.M();!qd(this)!=!rd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Ph(){var a=this.M();!qd(this)==!rd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Qh(){var a=this.M();pd(this)||!qd(this)!=!rd(this)?(K(this,this.ua+a),this.A-=this.B.Ub):this.A-=this.B.Vb}function Rh(){var a=this.M();pd(this)||!qd(this)!=!rd(this)?this.A-=this.B.Vb:(K(this,this.ua+a),this.A-=this.B.Ub)}
+function Sh(){yh[this.ga()].call(this,ue,this.ga);this.A-=0>this.Ma?1:this.B.Ch}function Ec(){yh[this.ga()].call(this,De,re)}function Fc(){zh[this.ga()].call(this,Ee,re)}function Th(){var a=this.L();K(this,this.La());this.Y=this.Y+a&65535;this.A-=this.B.Gl}function Uh(){K(this,this.La());this.A-=this.B.Dl}
+function Gc(){var a=this.L(),b=this.ga()&31;this.A-=11;L(this,this.I);var c=this.Y;if(0>8,c,d=od(this);9<(a&15)||d?(a=a+6&15,b=b+1&255,c=d=!0):c=d=!1;this.H=b<<8|(this.Z=a);this.fa=65536;c&&(this.Z|=this.fa);d?yd(this):td(this);this.A-=this.B.Me},function(){vh[this.ga()].call(this,Sd)},function(){wh[this.ga()].call(this,$d)},function(){xh[this.ga()].call(this,Sd)},function(){O[this.ga()].call(this,$d)},function(){this.H=this.H&-256|Sd.call(this,this.H&255,this.ga());this.A--},function(){this.H=$d.call(this,this.H,this.L());this.A--},
+function(){this.$|=20;this.D=this.N=this.yb;this.A-=this.B.ne},function(){var a=this.H&255,b=this.H>>8,c,d=od(this);9<(a&15)||d?(a=a-6&15,b=b-1&255,c=d=!0):c=d=!1;this.H=b<<8|(this.Z=a);this.fa=65536;c&&(this.Z|=this.fa);d?yd(this):td(this);this.A-=this.B.Me},function(){this.oa=this.H;this.H=(this.la=this.H+1)&65535;this.Z=this.H|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.J;this.J=(this.la=this.J+1)&65535;this.Z=this.J|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=
+2},function(){this.oa=this.K;this.K=(this.la=this.K+1)&65535;this.Z=this.K|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.C;this.C=(this.la=this.C+1)&65535;this.Z=this.C|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.Y;this.Y=(this.la=this.Y+1)&65535;this.Z=this.Y|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.I;this.I=(this.la=this.I+1)&65535;this.Z=this.I|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=
+this.G;this.G=(this.la=this.G+1)&65535;this.Z=this.G|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.F;this.F=(this.la=this.F+1)&65535;this.Z=this.F|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.H;this.H=(this.la=this.H-1)&65535;this.Z=this.H|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.J;this.J=(this.la=this.J-1)&65535;this.Z=this.J|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.K;this.K=
+(this.la=this.K-1)&65535;this.Z=this.K|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.C;this.C=(this.la=this.C-1)&65535;this.Z=this.C|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.Y;this.Y=(this.la=this.Y-1)&65535;this.Z=this.Y|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.I;this.I=(this.la=this.I-1)&65535;this.Z=this.I|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.G;this.G=(this.la=this.G-
+1)&65535;this.Z=this.G|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){this.oa=this.F;this.F=(this.la=this.F-1)&65535;this.Z=this.F|(this.Z&this.fa?1:0)<<16;this.fa=65536;this.A-=2},function(){L(this,this.H);this.A-=this.B.pc},function(){L(this,this.J);this.A-=this.B.pc},function(){L(this,this.K);this.A-=this.B.pc},function(){L(this,this.C);this.A-=this.B.pc},function(){L(this,this.Y-2&65535);this.A-=this.B.pc},function(){L(this,this.I);this.A-=this.B.pc},function(){L(this,this.G);this.A-=
+this.B.pc},function(){L(this,this.F);this.A-=this.B.pc},function(){this.H=this.La();this.A-=this.B.hc},function(){this.J=this.La();this.A-=this.B.hc},function(){this.K=this.La();this.A-=this.B.hc},function(){this.C=this.La();this.A-=this.B.hc},function(){this.Y=this.La();this.A-=this.B.hc},function(){this.I=this.La();this.A-=this.B.hc},function(){this.G=this.La();this.A-=this.B.hc},function(){this.F=this.La();this.A-=this.B.hc},Ch,Dh,Eh,Fh,Gh,Hh,Ih,Jh,Kh,Lh,Mh,Nh,Oh,Ph,Qh,Rh,Ch,Dh,Eh,Fh,Gh,Hh,Ih,
+Jh,Kh,Lh,Mh,Nh,Oh,Ph,Qh,Rh,Sh,function(){zh[this.ga()].call(this,ve,this.L);this.A-=0>this.Ma?1:this.B.Ch},Sh,function(){zh[this.ga()].call(this,ve,this.M);this.A-=0>this.Ma?1:this.B.Ch},function(){vh[this.ga()].call(this,He)},function(){wh[this.ga()].call(this,Ie)},function(){xh[this.Rg=this.ga()].call(this,We)},function(){O[this.Rg=this.ga()].call(this,Xe)},function(){this.$|=1;vh[this.ga()].call(this,Fe)},function(){this.$|=1;wh[this.ga()].call(this,Fe)},function(){xh[this.ga()].call(this,Fe)},
+function(){O[this.ga()].call(this,Fe)},function(){var a=this.ga();switch((a&56)>>3){case 0:this.Eb=this.Za.sa;break;case 1:this.Eb=this.wa.sa;break;case 2:this.Eb=this.tb.sa;break;case 3:this.Eb=this.yb.sa;break;default:N.call(this);return}this.$|=1;wh[a].call(this,Ge)},function(){this.$|=1;this.D=this.N=this.Yl;O[this.ga()].call(this,Me)},function(){var a,b=this.ga(),c=(b&56)>>3;switch(c){case 0:a=this.H;break;case 2:a=this.K;break;case 3:a=this.C;break;default:if(80286<=this.Ia){sc.call(this);return}switch(c){case 1:a=
+this.J;break;case 4:a=this.Y;break;case 5:a=this.I;break;case 6:a=this.G;break;case 7:a=this.F}}O[b].call(this,Fe);switch(c){case 0:kd(this,this.H);this.H=a;break;case 1:hd(this,this.J);this.J=a;break;case 2:jd(this,this.K);this.K=a;break;case 3:id(this,this.C);this.C=a;break;case 4:kd(this,this.Y);this.Y=a;break;case 5:hd(this,this.I);this.I=a;break;case 6:jd(this,this.G);this.G=a;break;case 7:id(this,this.F),this.F=a}},function(){this.$|=1;zh[this.ga()].call(this,we,this.La)},function(){this.A-=
3},function(){var a=this.H;this.H=this.J;this.J=a;this.A-=3},function(){var a=this.H;this.H=this.K;this.K=a;this.A-=3},function(){var a=this.H;this.H=this.C;this.C=a;this.A-=3},function(){var a=this.H;this.H=this.Y;this.Y=a;this.A-=3},function(){var a=this.H;this.H=this.I;this.I=a;this.A-=3},function(){var a=this.H;this.H=this.G;this.G=a;this.A-=3},function(){var a=this.H;this.H=this.F;this.F=a;this.A-=3},function(){this.H=this.H<<24>>24&65535;this.A-=2},function(){this.K=this.H&32768?65535:0;this.A-=
-this.B.Jk},function(){var a=this.L(),b=this.L();L(this,this.ua.pa);L(this,this.ra);Sc(this,a,b);this.A-=this.B.Mk},function(){N.call(this)},function(){L(this,Vc(this));this.A-=this.B.pc},function(){Tc(this,this.Ja());this.A-=this.B.hc},function(){var a=this.H>>8;a&1?xd(this):sd(this);a&4?nd(this)||(this.ka^=1):nd(this)&&(this.ka^=1);a&16?yd(this):td(this);a&64?zd(this):ud(this);a&128?Ad(this):vd(this);this.A-=this.B.Bb},function(){this.H=this.H&255|(Vc(this)&213)<<8;this.A-=this.B.Bb},function(){this.H=
-this.H&-256|this.U(this.D,this.L());this.A-=this.B.dj},function(){this.H=this.V(this.D,this.L());this.A-=this.B.dj},function(){var a=this.L(),b=this.H;this.Jd(this.D.fc(a,0),b);this.A-=this.B.ej},function(){var a=this.L(),b=this.H;this.Zc(this.D.fc(a,1),b);this.A-=this.B.ej},function(){var a=1,b=0,c=this.B.fj;this.ya&192&&(a=this.J,b=1,c=this.B.hj,this.ya&256||(this.A-=this.B.gj));if(a--){var d=this.za&1024?-1:1,e=this.U(this.D,this.G);this.Jd(this.Wa.fc(this.F,0),e);this.G=this.G+d&65535;this.F=
-this.F+d&65535;this.A-=c;this.J-=b;a&&(ld(this,this.ya&16?-3:-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.fj;this.ya&192&&(a=this.J,b=1,c=this.B.hj,this.ya&256||(this.A-=this.B.gj));if(a--){var d=this.za&1024?-2:2,e=this.V(this.D,this.G);this.Zc(this.Wa.fc(this.F,1),e);this.G=this.G+d&65535;this.F=this.F+d&65535;this.A-=c;this.J-=b;a&&(ld(this,this.ya&16?-3:-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.Qi;this.ya&192&&(a=this.J,b=1,c=this.B.Si,this.ya&256||(this.A-=this.B.Ri));if(a--){var d=
-this.za&1024?-1:1,e=this.U(this.D,this.G),f=this.O(this.Wa,this.F);Rd.call(this,e,f);this.G=this.G+d&65535;this.F=this.F+d&65535;this.A-=c-this.B.qb;this.J-=b;a&&pd(this)==(this.ya&64)&&(ld(this,this.ya&16?-3:-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.Qi;this.ya&192&&(a=this.J,b=1,c=this.B.Si,this.ya&256||(this.A-=this.B.Ri));if(a--){var d=this.za&1024?-2:2,e=this.V(this.D,this.G),f=this.P(this.Wa,this.F);Zd.call(this,e,f);this.G=this.G+d&65535;this.F=this.F+d&65535;this.A-=c-this.B.qb;this.J-=
-b;a&&pd(this)==(this.ya&64)&&(ld(this,this.ya&16?-3:-2),this.$|=256)}},function(){this.Z=this.ka=this.na=this.H&255&this.fa();this.ea=256;this.A-=this.B.Je},function(){this.Z=this.ka=this.na=this.H&this.L();this.ea=65536;this.A-=this.B.Je},function(){var a=1,b=0,c=this.B.qj;this.ya&192&&(a=this.J,b=1,c=this.B.sj,this.ya&256||(this.A-=this.B.rj));if(a--){var d=this.H;this.Jd(this.Wa.fc(this.F,0),d);this.F=this.F+(this.za&1024?-1:1)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}},function(){var a=
-1,b=0,c=this.B.qj;this.ya&192&&(a=this.J,b=1,c=this.B.sj,this.ya&256||(this.A-=this.B.rj));if(a--){var d=this.H;this.Zc(this.Wa.fc(this.F,1),d);this.F=this.F+(this.za&1024?-2:2)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.Yi;this.ya&192&&(a=this.J,b=1,c=this.B.$i,this.ya&256||(this.A-=this.B.Zi));a--&&(this.H=this.H&-256|this.U(this.D,this.G),this.G=this.G+(this.za&1024?-1:1)&65535,this.A-=c,this.J-=b,a&&(ld(this,this.ya&16?-3:-2),this.$|=256))},function(){var a=
-1,b=0,c=this.B.Yi;this.ya&192&&(a=this.J,b=1,c=this.B.$i,this.ya&256||(this.A-=this.B.Zi));a--&&(this.H=this.V(this.D,this.G),this.G=this.G+(this.za&1024?-2:2)&65535,this.A-=c,this.J-=b,a&&(ld(this,this.ya&16?-3:-2),this.$|=256))},function(){var a=1,b=0,c=this.B.kj;this.ya&192&&(a=this.J,b=1,c=this.B.mj,this.ya&256||(this.A-=this.B.lj));a--&&(Rd.call(this,this.H&255,this.O(this.Wa,this.F)),this.F=this.F+(this.za&1024?-1:1)&65535,this.A-=c-this.B.qb,this.J-=b,a&&pd(this)==(this.ya&64)&&(ld(this,-2),
-this.$|=256))},function(){var a=1,b=0,c=this.B.kj;this.ya&192&&(a=this.J,b=1,c=this.B.mj,this.ya&256||(this.A-=this.B.lj));a--&&(Zd.call(this,this.H,this.P(this.Wa,this.F)),this.F=this.F+(this.za&1024?-2:2)&65535,this.A-=c-this.B.qb,this.J-=b,a&&pd(this)==(this.ya&64)&&(ld(this,-2),this.$|=256))},function(){this.H=this.H&-256|this.fa();this.A-=this.B.Bb},function(){this.J=this.J&-256|this.fa();this.A-=this.B.Bb},function(){this.K=this.K&-256|this.fa();this.A-=this.B.Bb},function(){this.C=this.C&-256|
-this.fa();this.A-=this.B.Bb},function(){this.H=this.H&255|this.fa()<<8;this.A-=this.B.Bb},function(){this.J=this.J&255|this.fa()<<8;this.A-=this.B.Bb},function(){this.K=this.K&255|this.fa()<<8;this.A-=this.B.Bb},function(){this.C=this.C&255|this.fa()<<8;this.A-=this.B.Bb},function(){this.H=this.L();this.A-=this.B.Bb},function(){this.J=this.L();this.A-=this.B.Bb},function(){this.K=this.L();this.A-=this.B.Bb},function(){this.C=this.L();this.A-=this.B.Bb},function(){this.Y=this.L();this.A-=this.B.Bb},
-function(){this.I=this.L();this.A-=this.B.Bb},function(){this.G=this.L();this.A-=this.B.Bb},function(){this.F=this.L();this.A-=this.B.Bb},Th,Uh,Th,Uh,function(){O[this.fa()].call(this,Ne)},function(){O[this.fa()].call(this,Me)},function(){this.$|=1;yh[this.fa()].call(this,we,this.fa)},function(){this.$|=1;zh[this.fa()].call(this,we,this.L)},Vh,Wh,Vh,Wh,function(){Fd.call(this,3,null,this.B.cl)},function(){var a=this.fa();Xc(this,a)?Fd.call(this,a,null,0):this.A--},function(){rd(this)?Fd.call(this,
-4,null,this.B.dl):this.A-=this.B.el},function(){Sc(this,this.Ja(),this.Ja());Tc(this,this.Ja());this.Vg&&bd(this,this.Da);this.A-=this.B.al},function(){yh[this.fa()].call(this,xe,oe)},function(){zh[this.fa()].call(this,ye,oe)},function(){yh[this.fa()].call(this,xe,pe)},function(){zh[this.fa()].call(this,ye,pe)},function(){var a=this.fa(),b=this.H&255;this.H=(b/a&255)<<8|b%a;this.ea=256;this.Z=this.ka=b;this.A-=this.B.Gk},function(){var a=this.fa();this.Z=this.ka=this.H=(this.H>>8)*a+this.H&255;this.ea=
-256;this.A-=this.B.Fk},function(){this.H=this.H&-256|(md(this)?255:0);this.A-=2},function(){this.H=this.H&-256|this.U(this.D,this.C+(this.H&255)&65535);this.A-=this.B.El},Xh,Xh,Xh,Xh,Xh,Xh,Xh,Xh,function(){var a=this.M();(this.J=this.J-1&65535)&&this.Z&this.ea-1?(K(this,this.ra+a),this.A-=this.B.ll):this.A-=this.B.aj},function(){var a=this.M();!(this.J=this.J-1&65535)||this.Z&this.ea-1?this.A-=this.B.cj:(K(this,this.ra+a),this.A-=this.B.bj)},function(){var a=this.M();(this.J=this.J-1&65535)?(K(this,
-this.ra+a),this.A-=this.B.kl):this.A-=this.B.aj},function(){var a=this.M();this.J?this.A-=this.B.cj:(K(this,this.ra+a),this.A-=this.B.bj)},function(){var a=this.fa();this.H=this.H&-256|vb(this.oa,a,this.Da-2);this.A-=this.B.Vi},function(){var a=this.fa();this.H=vb(this.oa,a,this.Da-1)|vb(this.oa,a+1&65535,this.Da-2)<<8;this.A-=this.B.Vi},function(){var a=this.fa();zb(this.oa,a,this.H&255,this.Da-2);this.A-=this.B.jj},function(){var a=this.fa();zb(this.oa,a,this.H&255,this.Da-2);zb(this.oa,a+1&65535,
-this.H>>8,this.Da-2);this.A-=this.B.jj},function(){var a=this.L();L(this,this.ra);K(this,this.ra+a);this.A-=this.B.Kk},function(){var a=this.L();K(this,this.ra+a);this.A-=this.B.Wi},function(){Sc(this,this.L(),this.L());this.A-=this.B.gl},function(){var a=this.M();K(this,this.ra+a);this.A-=this.B.Wi},function(){this.H=this.H&-256|vb(this.oa,this.K,this.Da-1);this.A-=this.B.Ui},function(){this.H=vb(this.oa,this.K,this.Da-1)|vb(this.oa,this.K+1&65535,this.Da-1)<<8;this.A-=this.B.Ui},function(){zb(this.oa,
-this.K,this.H&255,this.Da-1);this.A-=this.B.ij},function(){zb(this.oa,this.K,this.H&255,this.Da-1);zb(this.oa,this.K+1&65535,this.H>>8,this.Da-1);this.A-=this.B.ij},Yh,Yh,function(){this.$|=132;this.A-=this.B.ke},function(){this.$|=68;this.A-=this.B.ke},function(){this.kb|=4;this.A-=2;this.ba&&Cd(this.ba)?(ld(this,-1),this.zb()):this.za&512||(this.ba&&ld(this,-1),this.zb())},function(){md(this)?sd(this):xd(this);this.A-=2},function(){this.Cb=-1;yh[this.fa()].call(this,Ae,re);0<=this.Cb&&(this.H=this.Cb)},
-function(){this.Cb=-1;zh[this.fa()].call(this,Be,re);0<=this.Cb&&(this.H=this.Cb,this.K=this.ug)},function(){this.Z&=~this.ea;this.A-=2},function(){this.Z|=this.ea;this.A-=2},function(){this.za&=-513;this.A-=this.B.Ik},function(){this.za|=512;this.$|=4;this.A-=2},function(){this.za&=-1025;this.A-=2},function(){this.za|=1024;this.A-=2},function(){yh[this.fa()].call(this,Kc,re)},function(){zh[this.fa()].call(this,Nc,re)}];
-function P(a){y.call(this,"ChipSet",a,P);this.Ga=a.model;this.Ga=void 0!==this.Ga?parseInt(this.Ga,10):Zh;this.Yb=0;var b=a.sw1;if(b)this.Yb=$h(b,ai|bi.cm);else{this.Qd=[360,360];(b=a.floppies)&&void 0!==b.length&&(this.Qd=b);if(b=this.Qd.length)this.Yb|=ci.Ph,b--,this.Yb|=(b&3)<=di&&(this.Mf=this.Nf=2);this.jh=a.scaleTimers||!1;
-this.Zo=a.rtcDate;this.qk=!1;a.sound&&window&&"webkitAudioContext"in window&&(this.fi=new webkitAudioContext);this.reset(!0);this.Qa()}A(y,P);var Zh=5150,di=5170,ei={none:0,tv:1,color:2,mono:3,ega:0},ci={Ph:1,ONE:0,Cp:64,Ap:128,kp:192,zf:192,Af:6},ai=12,bi={Bp:16,fp:32,cm:48,zf:48,Af:4};k=P.prototype;
-k.wb=function(a,b,c,d){switch(c){case "sw1":return this.va[c]=d,fi(this,c,d,this.Yb,{0:this.Ga==Zh?"Bootable Floppy Drive":"Loop on POST",1:this.Ga==Zh?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Ga==Zh)return this.va[c]=d,fi(this,c,d,this.qe,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.va[c]=d,!0}return!1};
-k.oc=function(a,b,c,d){this.oa=b;this.T=c;this.ba=d;this.Fa=a;this.cb=db(a,"Keyboard");this.Fl=Math.round(c.Ed/1193181);sb(b,this,gi);yb(b,this,hi);this.Gab;b++){var c=13>=b?qi(e,b):e.qa[b];a&&(a+="\n");a+="CMOS[0x"+t(b)+"]: 0x"+t(c)}e.ba.message(a)})}Wc(c,26,this,this.An)};k.Xb=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.Wb=function(a){return a&&this.save?this.save():!0};
-k.reset=function(a){var b;this.$c=this.Yb;this.Te=this.qe;ri(this);this.$a=Array(this.Mf);for(b=0;b=di){this.hb=16;this.rd=0;this.Wd=16;this.Lg=0;this.we=160;512<=vi(this)&&(this.we|=16);3==wi(this)&&(this.we|=64);this.Zh=3;this.Jf=0;this.Hg=Array(7);this.xe=0;a&&(this.qa=Array(64));
-xi(this,this.Zo);for(a=21;24>=a;a++)this.qa[a]=0;for(a=14;46>a;a++)void 0===this.qa[a]&&(this.qa[a]=0);this.qa[20]=this.$c&(bi.zf|2|ci.Ph|ci.zf);this.qa[16]=yi(this,0)<<4|yi(this,1);zi(this)}};
-function xi(a,b){var c=b?new Date(b):new Date;"[object Date]"!==Object.prototype.toString.call(c)||isNaN(c.getTime())?(c=new Date,a.da("CMOS date invalid ("+b+"), using "+c)):b&&a.da("CMOS date: "+c);a.qa[0]=c.getSeconds();a.qa[1]=0;a.qa[2]=c.getMinutes();a.qa[3]=0;a.qa[4]=c.getHours();a.qa[5]=0;a.qa[6]=c.getDay()+1;a.qa[7]=c.getDate();a.qa[8]=c.getMonth()+1;c=c.getFullYear();a.qa[9]=c%100;c/=100;a.qa[50]=c%10|c/10<<4;a.cg=-1;a.qa[10]=38;a.qa[11]=2;a.qa[12]=0;a.qa[13]=128}
-function qi(a,b){var c=a.qa[b];if(10>b){var d=!1;4!=b&&5!=b||a.qa[11]&2||(c=12>c?c?c:12:(c-=12)?c+128:140,d=!0);a.qa[11]&4||(d&&128c;c++)b+=a.qa[c];a.qa[47]=b&255;a.qa[46]=b>>8}
-k.save=function(){var a=new I(this);a.set(0,[this.Yb,this.qe,this.$c,this.Te]);for(var b=[],c=0;c=di&&(a.set(5,[this.hb,this.rd,this.Wd,this.Lg,this.we,this.Zh]),a.set(6,[this.Jf,this.Hg,this.xe,this.qa,this.cg]));return a.data()};
-k.restore=function(a){var b,c;b=a[0];this.Yb=b[0];this.qe=b[1];this.$c=b[2];this.Te=b[3];b=a[1];this.$a=Array(this.Mf);for(c=0;c>2)+1)*a.Dn+32*((b?a.qe:a.Te)&15)}function Ci(a,b){var c=b?a.Yb:a.$c;return a.Ga!=Zh||c&ci.Ph?((c&ci.zf)>>ci.Af)+1:0}
-function yi(a,b){if(b>bi.Af}
+this.B.Nk},function(){var a=this.L(),b=this.L();L(this,this.wa.sa);L(this,this.ua);Sc(this,a,b);this.A-=this.B.Qk},function(){N.call(this)},function(){L(this,Vc(this));this.A-=this.B.pc},function(){Tc(this,this.La());this.A-=this.B.hc},function(){var a=this.H>>8;a&1?xd(this):sd(this);a&4?nd(this)||(this.la^=1):nd(this)&&(this.la^=1);a&16?yd(this):td(this);a&64?zd(this):ud(this);a&128?Ad(this):vd(this);this.A-=this.B.Db},function(){this.H=this.H&255|(Vc(this)&213)<<8;this.A-=this.B.Db},function(){this.H=
+this.H&-256|this.U(this.D,this.L());this.A-=this.B.gj},function(){this.H=this.V(this.D,this.L());this.A-=this.B.gj},function(){var a=this.L(),b=this.H;this.Md(this.D.fc(a,0),b);this.A-=this.B.hj},function(){var a=this.L(),b=this.H;this.bd(this.D.fc(a,1),b);this.A-=this.B.hj},function(){var a=1,b=0,c=this.B.ij;this.Aa&192&&(a=this.J,b=1,c=this.B.kj,this.Aa&256||(this.A-=this.B.jj));if(a--){var d=this.Ba&1024?-1:1,e=this.U(this.D,this.G);this.Md(this.Za.fc(this.F,0),e);this.G=this.G+d&65535;this.F=
+this.F+d&65535;this.A-=c;this.J-=b;a&&(ld(this,this.Aa&16?-3:-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.ij;this.Aa&192&&(a=this.J,b=1,c=this.B.kj,this.Aa&256||(this.A-=this.B.jj));if(a--){var d=this.Ba&1024?-2:2,e=this.V(this.D,this.G);this.bd(this.Za.fc(this.F,1),e);this.G=this.G+d&65535;this.F=this.F+d&65535;this.A-=c;this.J-=b;a&&(ld(this,this.Aa&16?-3:-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.Ti;this.Aa&192&&(a=this.J,b=1,c=this.B.Vi,this.Aa&256||(this.A-=this.B.Ui));if(a--){var d=
+this.Ba&1024?-1:1,e=this.U(this.D,this.G),f=this.O(this.Za,this.F);Sd.call(this,e,f);this.G=this.G+d&65535;this.F=this.F+d&65535;this.A-=c-this.B.sb;this.J-=b;a&&pd(this)==(this.Aa&64)&&(ld(this,this.Aa&16?-3:-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.Ti;this.Aa&192&&(a=this.J,b=1,c=this.B.Vi,this.Aa&256||(this.A-=this.B.Ui));if(a--){var d=this.Ba&1024?-2:2,e=this.V(this.D,this.G),f=this.P(this.Za,this.F);$d.call(this,e,f);this.G=this.G+d&65535;this.F=this.F+d&65535;this.A-=c-this.B.sb;this.J-=
+b;a&&pd(this)==(this.Aa&64)&&(ld(this,this.Aa&16?-3:-2),this.$|=256)}},function(){this.Z=this.la=this.oa=this.H&255&this.ga();this.fa=256;this.A-=this.B.Me},function(){this.Z=this.la=this.oa=this.H&this.L();this.fa=65536;this.A-=this.B.Me},function(){var a=1,b=0,c=this.B.tj;this.Aa&192&&(a=this.J,b=1,c=this.B.vj,this.Aa&256||(this.A-=this.B.uj));if(a--){var d=this.H;this.Md(this.Za.fc(this.F,0),d);this.F=this.F+(this.Ba&1024?-1:1)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}},function(){var a=
+1,b=0,c=this.B.tj;this.Aa&192&&(a=this.J,b=1,c=this.B.vj,this.Aa&256||(this.A-=this.B.uj));if(a--){var d=this.H;this.bd(this.Za.fc(this.F,1),d);this.F=this.F+(this.Ba&1024?-2:2)&65535;this.A-=c;this.J-=b;a&&(ld(this,-2),this.$|=256)}},function(){var a=1,b=0,c=this.B.aj;this.Aa&192&&(a=this.J,b=1,c=this.B.cj,this.Aa&256||(this.A-=this.B.bj));a--&&(this.H=this.H&-256|this.U(this.D,this.G),this.G=this.G+(this.Ba&1024?-1:1)&65535,this.A-=c,this.J-=b,a&&(ld(this,this.Aa&16?-3:-2),this.$|=256))},function(){var a=
+1,b=0,c=this.B.aj;this.Aa&192&&(a=this.J,b=1,c=this.B.cj,this.Aa&256||(this.A-=this.B.bj));a--&&(this.H=this.V(this.D,this.G),this.G=this.G+(this.Ba&1024?-2:2)&65535,this.A-=c,this.J-=b,a&&(ld(this,this.Aa&16?-3:-2),this.$|=256))},function(){var a=1,b=0,c=this.B.nj;this.Aa&192&&(a=this.J,b=1,c=this.B.pj,this.Aa&256||(this.A-=this.B.oj));a--&&(Sd.call(this,this.H&255,this.O(this.Za,this.F)),this.F=this.F+(this.Ba&1024?-1:1)&65535,this.A-=c-this.B.sb,this.J-=b,a&&pd(this)==(this.Aa&64)&&(ld(this,-2),
+this.$|=256))},function(){var a=1,b=0,c=this.B.nj;this.Aa&192&&(a=this.J,b=1,c=this.B.pj,this.Aa&256||(this.A-=this.B.oj));a--&&($d.call(this,this.H,this.P(this.Za,this.F)),this.F=this.F+(this.Ba&1024?-2:2)&65535,this.A-=c-this.B.sb,this.J-=b,a&&pd(this)==(this.Aa&64)&&(ld(this,-2),this.$|=256))},function(){this.H=this.H&-256|this.ga();this.A-=this.B.Db},function(){this.J=this.J&-256|this.ga();this.A-=this.B.Db},function(){this.K=this.K&-256|this.ga();this.A-=this.B.Db},function(){this.C=this.C&-256|
+this.ga();this.A-=this.B.Db},function(){this.H=this.H&255|this.ga()<<8;this.A-=this.B.Db},function(){this.J=this.J&255|this.ga()<<8;this.A-=this.B.Db},function(){this.K=this.K&255|this.ga()<<8;this.A-=this.B.Db},function(){this.C=this.C&255|this.ga()<<8;this.A-=this.B.Db},function(){this.H=this.L();this.A-=this.B.Db},function(){this.J=this.L();this.A-=this.B.Db},function(){this.K=this.L();this.A-=this.B.Db},function(){this.C=this.L();this.A-=this.B.Db},function(){this.Y=this.L();this.A-=this.B.Db},
+function(){this.I=this.L();this.A-=this.B.Db},function(){this.G=this.L();this.A-=this.B.Db},function(){this.F=this.L();this.A-=this.B.Db},Th,Uh,Th,Uh,function(){O[this.ga()].call(this,Oe)},function(){O[this.ga()].call(this,Ne)},function(){this.$|=1;yh[this.ga()].call(this,xe,this.ga)},function(){this.$|=1;zh[this.ga()].call(this,xe,this.L)},Vh,Wh,Vh,Wh,function(){Fd.call(this,3,null,this.B.gl)},function(){var a=this.ga();Xc(this,a)?Fd.call(this,a,null,0):this.A--},function(){rd(this)?Fd.call(this,
+4,null,this.B.hl):this.A-=this.B.il},function(){Sc(this,this.La(),this.La());Tc(this,this.La());this.Yg&&bd(this,this.Fa);this.A-=this.B.el},function(){yh[this.ga()].call(this,ye,pe)},function(){zh[this.ga()].call(this,ze,pe)},function(){yh[this.ga()].call(this,ye,qe)},function(){zh[this.ga()].call(this,ze,qe)},function(){var a=this.ga(),b=this.H&255;this.H=(b/a&255)<<8|b%a;this.fa=256;this.Z=this.la=b;this.A-=this.B.Kk},function(){var a=this.ga();this.Z=this.la=this.H=(this.H>>8)*a+this.H&255;this.fa=
+256;this.A-=this.B.Jk},function(){this.H=this.H&-256|(md(this)?255:0);this.A-=2},function(){this.H=this.H&-256|this.U(this.D,this.C+(this.H&255)&65535);this.A-=this.B.Il},Xh,Xh,Xh,Xh,Xh,Xh,Xh,Xh,function(){var a=this.M();(this.J=this.J-1&65535)&&this.Z&this.fa-1?(K(this,this.ua+a),this.A-=this.B.pl):this.A-=this.B.dj},function(){var a=this.M();!(this.J=this.J-1&65535)||this.Z&this.fa-1?this.A-=this.B.fj:(K(this,this.ua+a),this.A-=this.B.ej)},function(){var a=this.M();(this.J=this.J-1&65535)?(K(this,
+this.ua+a),this.A-=this.B.ol):this.A-=this.B.dj},function(){var a=this.M();this.J?this.A-=this.B.fj:(K(this,this.ua+a),this.A-=this.B.ej)},function(){var a=this.ga();this.H=this.H&-256|vb(this.qa,a,this.Fa-2);this.A-=this.B.Yi},function(){var a=this.ga();this.H=vb(this.qa,a,this.Fa-1)|vb(this.qa,a+1&65535,this.Fa-2)<<8;this.A-=this.B.Yi},function(){var a=this.ga();zb(this.qa,a,this.H&255,this.Fa-2);this.A-=this.B.mj},function(){var a=this.ga();zb(this.qa,a,this.H&255,this.Fa-2);zb(this.qa,a+1&65535,
+this.H>>8,this.Fa-2);this.A-=this.B.mj},function(){var a=this.L();L(this,this.ua);K(this,this.ua+a);this.A-=this.B.Ok},function(){var a=this.L();K(this,this.ua+a);this.A-=this.B.Zi},function(){Sc(this,this.L(),this.L());this.A-=this.B.kl},function(){var a=this.M();K(this,this.ua+a);this.A-=this.B.Zi},function(){this.H=this.H&-256|vb(this.qa,this.K,this.Fa-1);this.A-=this.B.Xi},function(){this.H=vb(this.qa,this.K,this.Fa-1)|vb(this.qa,this.K+1&65535,this.Fa-1)<<8;this.A-=this.B.Xi},function(){zb(this.qa,
+this.K,this.H&255,this.Fa-1);this.A-=this.B.lj},function(){zb(this.qa,this.K,this.H&255,this.Fa-1);zb(this.qa,this.K+1&65535,this.H>>8,this.Fa-1);this.A-=this.B.lj},Yh,Yh,function(){this.$|=132;this.A-=this.B.ne},function(){this.$|=68;this.A-=this.B.ne},function(){this.mb|=4;this.A-=2;this.ca&&Cd(this.ca)?(ld(this,-1),this.wb()):this.Ba&512||(this.ca&&ld(this,-1),this.wb())},function(){md(this)?sd(this):xd(this);this.A-=2},function(){this.Eb=-1;yh[this.ga()].call(this,Be,se);0<=this.Eb&&(this.H=this.Eb)},
+function(){this.Eb=-1;zh[this.ga()].call(this,Ce,se);0<=this.Eb&&(this.H=this.Eb,this.K=this.xg)},function(){this.Z&=~this.fa;this.A-=2},function(){this.Z|=this.fa;this.A-=2},function(){this.Ba&=-513;this.A-=this.B.Mk},function(){this.Ba|=512;this.$|=4;this.A-=2},function(){this.Ba&=-1025;this.A-=2},function(){this.Ba|=1024;this.A-=2},function(){yh[this.ga()].call(this,Kc,se)},function(){zh[this.ga()].call(this,Nc,se)}];
+function P(a){y.call(this,"ChipSet",a,P);this.Ia=a.model;this.Ia=void 0!==this.Ia?parseInt(this.Ia,10):Zh;this.Yb=0;var b=a.sw1;if(b)this.Yb=$h(b,ai|bi.gm);else{this.Td=[360,360];(b=a.floppies)&&void 0!==b.length&&(this.Td=b);if(b=this.Td.length)this.Yb|=ci.Sh,b--,this.Yb|=(b&3)<=di&&(this.Qf=this.Rf=2);this.mh=a.scaleTimers||!1;
+this.bp=a.rtcDate;this.uk=!1;a.sound&&window&&"webkitAudioContext"in window&&(this.ii=new webkitAudioContext);this.reset(!0);this.Ta()}A(y,P);var Zh=5150,di=5170,ei={none:0,tv:1,color:2,mono:3,ega:0},ci={Sh:1,ONE:0,Fp:64,Dp:128,np:192,Cf:192,Df:6},ai=12,bi={Ep:16,ip:32,gm:48,Cf:48,Df:4};k=P.prototype;
+k.zb=function(a,b,c,d){switch(c){case "sw1":return this.xa[c]=d,fi(this,c,d,this.Yb,{0:this.Ia==Zh?"Bootable Floppy Drive":"Loop on POST",1:this.Ia==Zh?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Ia==Zh)return this.xa[c]=d,fi(this,c,d,this.te,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.xa[c]=d,!0}return!1};
+k.oc=function(a,b,c,d){this.qa=b;this.T=c;this.ca=d;this.Ha=a;this.fb=db(a,"Keyboard");this.Jl=Math.round(c.ba.Hd/1193181);sb(b,this,gi);yb(b,this,hi);this.Iab;b++){var c=13>=b?qi(e,b):e.ra[b];a&&(a+="\n");a+="CMOS[0x"+t(b)+"]: 0x"+t(c)}e.ca.message(a)})}Wc(c,26,this,this.En)};k.Xb=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.Wb=function(a){return a&&this.save?this.save():!0};
+k.reset=function(a){var b;this.cd=this.Yb;this.We=this.te;ri(this);this.cb=Array(this.Qf);for(b=0;b=di){this.jb=16;this.ud=0;this.Zd=16;this.Og=0;this.ze=160;512<=vi(this)&&(this.ze|=16);3==wi(this)&&(this.ze|=64);this.bi=3;this.Nf=0;this.Kg=Array(7);this.Ae=0;a&&(this.ra=Array(64));
+xi(this,this.bp);for(a=21;24>=a;a++)this.ra[a]=0;for(a=14;46>a;a++)void 0===this.ra[a]&&(this.ra[a]=0);this.ra[20]=this.cd&(bi.Cf|2|ci.Sh|ci.Cf);this.ra[16]=yi(this,0)<<4|yi(this,1);zi(this)}};
+function xi(a,b){var c=b?new Date(b):new Date;"[object Date]"!==Object.prototype.toString.call(c)||isNaN(c.getTime())?(c=new Date,a.ea("CMOS date invalid ("+b+"), using "+c)):b&&a.ea("CMOS date: "+c);a.ra[0]=c.getSeconds();a.ra[1]=0;a.ra[2]=c.getMinutes();a.ra[3]=0;a.ra[4]=c.getHours();a.ra[5]=0;a.ra[6]=c.getDay()+1;a.ra[7]=c.getDate();a.ra[8]=c.getMonth()+1;c=c.getFullYear();a.ra[9]=c%100;c/=100;a.ra[50]=c%10|c/10<<4;a.fg=-1;a.ra[10]=38;a.ra[11]=2;a.ra[12]=0;a.ra[13]=128}
+function qi(a,b){var c=a.ra[b];if(10>b){var d=!1;4!=b&&5!=b||a.ra[11]&2||(c=12>c?c?c:12:(c-=12)?c+128:140,d=!0);a.ra[11]&4||(d&&128c;c++)b+=a.ra[c];a.ra[47]=b&255;a.ra[46]=b>>8}
+k.save=function(){var a=new I(this);a.set(0,[this.Yb,this.te,this.cd,this.We]);for(var b=[],c=0;c=di&&(a.set(5,[this.jb,this.ud,this.Zd,this.Og,this.ze,this.bi]),a.set(6,[this.Nf,this.Kg,this.Ae,this.ra,this.fg]));return a.data()};
+k.restore=function(a){var b,c;b=a[0];this.Yb=b[0];this.te=b[1];this.cd=b[2];this.We=b[3];b=a[1];this.cb=Array(this.Qf);for(c=0;c>2)+1)*a.Hn+32*((b?a.te:a.We)&15)}function Ci(a,b){var c=b?a.Yb:a.cd;return a.Ia!=Zh||c&ci.Sh?((c&ci.Cf)>>ci.Df)+1:0}
+function yi(a,b){if(b>bi.Df}
function fi(a,b,c,d,e){for(var f="",h=1;8>=h;h++){var g="pcjs-bitCell";h||(g+=" pcjs-bitCellLeft");f+=''+h+"
\n"}c.innerHTML=f;b=D(c,"pcjs-bitCell");c=null;for(h=0;h>2].Db[b&3],c,d,e)}
-function Li(a,b,c){b=a.$a[b>>2].Db[b&3];b.Xg&&b.yi&&b.Bh?(c&&(b.Zg=c),b.Cd||Gd(a,b,!0)):c&&c(!0)}function Gd(a,b,c){c&&(b.count=b.Zb[1]<<8|b.Zb[0],b.Yl=b.mode&12,b.rk=b.fd=!1);for(var d=!1;0<=b.count&&(c=b.Rg<<16|b.Nb[1]<<8|b.Nb[0],4==b.Yl?(d=!0,function(c){b.yi.call(b.Xg,b.Bh,-1,function(f,h){0>f&&(b.rk||(b.rk=!0),f=255);b.Cd||ob(a.oa,c,f);(d=h)&&setTimeout(function(){Si(b)||Gd(a,b)},0)})}(c)):8==b.Yl?(c=mb(a.oa,c),0>b.yi.call(b.Xg,b.Bh,c)&&(b.fd=!0)):b.fd=!0),!d&&!Si(b););}
-function Si(a){if(!a.fd&&0<=--a.count&&(a.mode&32?(a.Nb[0]--,0>a.Nb[0]&&(a.Nb[0]=255,a.Nb[1]--,0>a.Nb[1]&&(a.Nb[1]=255))):(a.Nb[0]++,255>3,e=a.sb[d];e.Gb|=1<<(b&7);e.hg=c||0;1==d&&(a.sb[0].Gb|=4);Vi(a,d)}
-function Zi(a,b){var c=b>>3,d=a.sb[c],e=1<<(b&7);d.Gb&e&&(d.Gb&=~e,1!=c||d.Gb||(a.sb[0].Gb&=-5),Vi(a,c))}function Ed(a,b){void 0===b&&(b=0);var c=-1,d=a.sb[b];if(d.hg)c=-2,d.hg--;else for(var e=d.Gb&((d.Ec|d.sd)^255),f=d.ye+1;;){var f=f&7,h=1<>6;if(3!=a){c=b&1;var d=b&14;if(b&=48){var e=this.Eb[a];e.vg=b;e.mode=d;e.ck=c;e.Hc=[0,0];e.Zb=[0,0];e.Sf=[0,0];e.gd=!1;e.Vf=!1;e.cf=!1;aj(this,a);0==a&&Zi(this,0);2==a&&255==this.sb[0].sd&&77==this.yc&&(a=this.Eb[0],a.Vc[0]=a.Hc[0],a.Vc[1]=a.Hc[1],a.ne=F(this.T,this.jh))}else oi(this,a),b=this.Eb[a],b.Sf[0]=b.Zb[0],b.Sf[1]=b.Zb[1],b.Vf=!0,aj(this,a)}};
-function cj(a,b){var c=a.Eb[b],d=c.Hc[1]<<8|c.Hc[0];d||(d=1==c.dd?256:65536);return d}function aj(a,b){var c=a.Eb[b];c.ce=32==c.vg?1:0;c.dd=48==c.vg?2:1}
-function oi(a,b,c){var d=a.Eb[b];if(d.cf&&(2!=b||a.yc&1)){var e=F(a.T,a.jh),f=(e-d.ne)/a.Fl|0;0>f&&(d.ne=e,f=0);var h=cj(a,b),g=a.Eb[b],l=g.Vc[1]<<8|g.Vc[0];l||(l=1==g.dd?256:65536);g=l-f;0==d.mode?(0>=g&&(g=0),g||(d.gd=!0,d.cf=!1,b||Yi(a,0))):4==d.mode?(d.gd=1!=g,0>=g&&(g=h+g,0>=g&&(g=h),d.Vc[0]=g&255,d.Vc[1]=g>>8,d.ne=e,!b&&d.gd&&Yi(a,0))):6==d.mode&&(g-=f,0>=g&&(d.gd=!d.gd,g=h+g,0>=g&&(g=h),d.Vc[0]=g&255,d.Vc[1]=g>>8,d.ne=e,!b&&d.gd&&Yi(a,0)));d.Zb[0]=g&255;d.Zb[1]=g>>8;c&&(a.ne=0)}return d}
-function Yb(a,b){for(var c=0;c=di){var c=0,d=a.T.Ed,e=F(a.T,a.jh);if(0<=a.cg&&(c=e-a.cg,Math.floor(c/d)&&60<=++a.qa[0]&&(a.qa[0]=0,60<=++a.qa[2]&&(a.qa[2]=0,24<=++a.qa[4])))){a.qa[4]=0;a.qa[6]=a.qa[6]%7+1;var f=a.qa[9],h=qa[a.qa[8]-1];28==h&&0===f%4&&(f%100||0===f%400)&&h++;++a.qa[7]>h&&(a.qa[7]=1,12<++a.qa[8]&&(a.qa[8]=1,a.qa[9]=(a.qa[9]+1)%100))}a.cg=e-c%d}}
-k.mn=function(a,b){var c=this.Qg;this.Lf&16&&(this.yc&128?c=this.$c:this.cb&&(c=dj(this.cb)));this.ca(a,null,b,"PPI_A",ej,c);return c};k.Eo=function(a,b,c){this.ca(a,b,c,"PPI_A",ej);this.Qg=b};k.nn=function(a,b){var c=this.yc;this.ca(a,null,b,"PPI_B",ej,c);return c};k.Fo=function(a,b,c){this.ca(a,b,c,"PPI_B",ej);fj(this,b);this.cb&&gj(this.cb,b&128?!1:!0,b&64?!0:!1)};function fj(a,b){var c=!!(b&2),d=!!(a.yc&2);a.yc=b;c!=d&&Xb(a,c)}
-k.on=function(a,b){var c=0,c=this.Ga==Zh?this.yc&4?c|this.Te&15:c|this.Te>>4&1:this.yc&8?c|this.$c>>4:c|this.$c&15;this.yc&1&&oi(this,2).gd&&(c=this.yc&2?c|32:c|16);this.ca(a,null,b,"PPI_C",ej|Cb,c);return c};k.Go=function(a,b,c){this.ca(a,b,c,"PPI_C",ej);this.ai=b};k.pn=function(a,b){var c=this.Lf;this.ca(a,null,b,"PPI_CTRL",ej,c);return c};k.Ho=function(a,b,c){this.ca(a,b,c,"PPI_CTRL",ej);this.Lf=b};
-k.Cm=function(a,b){var c=this.Lg;this.ca(a,null,b,"8042_OUTBUFF",hj,c);this.hb&=-258;var d=this.cb&&dj(this.cb,!0);d&&ij(this,d);return c};k.Wn=function(a,b,c){this.ca(a,b,c,"8042_INBUF.DATA",hj);if(this.hb&8)switch(this.rd){case 96:jj(this,b);break;case 209:kj(this,b);break;default:if(jj(this,this.Wd&-17),this.cb){a=-1;switch(b){case 255:a=250,lj(this.cb)}ij(this,a)}}this.rd=b;this.hb&=-9};k.Dm=function(a,b){var c=this.yc&-209|(F(this.T)&64?16:0);this.ca(a,null,b,"8042_RWREG",hj|mj,c);return c};
-k.Xn=function(a,b,c){this.ca(a,b,c,"8042_RWREG",hj);fj(this,b)};k.Em=function(a,b){this.ca(a,null,b,"8042_STATUS",hj,this.hb);var c=this.hb&255;this.hb&256&&(this.hb|=1,this.hb&=-257);return c};
-k.Vn=function(a,b,c){this.ca(a,b,c,"8042_INBUFF.CMD",hj);this.rd=b;this.hb|=8;a=0;240<=this.rd&&(a=this.rd^15,this.rd=240);switch(this.rd){case 192:ij(this,this.we);break;case 173:jj(this,this.Wd|16);break;case 174:jj(this,this.Wd&-17);break;case 170:this.cb&&nj(this.cb,!0);jj(this,this.Wd|16);ij(this,85);kj(this,3);break;case 224:ij(this,this.Wd&16?0:1);break;case 240:a&1&&Rc(this.T)}};function jj(a,b){a.Wd=b;a.hb=a.hb&-5|b&4;a.cb&&gj(a.cb,!!(b&8),!(b&16))&&ij(a,dj(a.cb,!0))}
-function ij(a,b){0<=b&&(a.Lg=b,a.hb&=-2,a.hb|=256)}function kj(a,b){a.Zh=b;ib(a.oa,!!(b&2));b&1||Rc(a.T)}k.Sm=function(a,b){this.ca(a,null,b,"CMOS_ADDR",pi,this.xe);return this.xe};k.mo=function(a,b,c){this.ca(a,b,c,"CMOS_ADDR",pi);this.xe=b;this.Pg=b&128?0:128};k.Tm=function(a,b){var c=this.xe&63,d=13>=c?qi(this,c):this.qa[c];this.ca(a,null,b,"CMOS_DATA["+t(c)+"]",pi,d);return d};
-k.no=function(a,b,c){var d=this.xe&63;this.ca(a,b,c,"CMOS_DATA["+t(d)+"]",pi);a=this.qa;13>=d&&10>d&&(c=!1,this.qa[11]&4||(b=10*(b>>4)+(b&15),c=!0),4==d||5==d)&&(c&&12=b?b=12==b?0:b:(b-=116,b=24==b?12:b)));a[d]=b};k.kn=function(a,b){this.ca(a,null,b,"MFG_DATA",ej,this.Jf);return this.Jf};k.Bo=function(a,b,c){this.ca(a,b,c,"MFG_DATA",ej);this.Jf=b};k.Do=function(a,b,c){this.ca(a,b,c,"NMI",ej);this.Pg=b};
-k.An=function(a){var b=this.T.H>>8;this.ba&&E(this.ba,oj)&&(Zc(this.ba,26,a),$c(this.T,a,function(a,d){return function(e){d=F(a.T)-d;var f,h=a.T.K&255,g=a.T.K>>8,l=a.T.K&255,n=a.T.K>>8;if(2==b||3==b)f=" CH(hour)="+v(g)+" CL(min)="+t(h)+" DH(sec)="+t(n);else if(4==b||5==b)f=" CX(year)="+v(a.T.J)+" DH(month)="+t(n)+" DL(day)="+t(l);ad(a.ba,26,e,d,f)}}(this,F(this.T))));return!0};function $h(a,b){if(void 0===a)return b;for(var c=0,d=1,e=0;ec||2E4>2].Fb[b&3],c,d,e)}
+function Li(a,b,c){b=a.cb[b>>2].Fb[b&3];b.$g&&b.Ai&&b.Eh?(c&&(b.bh=c),b.Fd||Gd(a,b,!0)):c&&c(!0)}function Gd(a,b,c){c&&(b.count=b.Zb[1]<<8|b.Zb[0],b.bm=b.mode&12,b.vk=b.Yc=!1);for(var d=!1;0<=b.count&&(c=b.Ug<<16|b.Ob[1]<<8|b.Ob[0],4==b.bm?(d=!0,function(c){b.Ai.call(b.$g,b.Eh,-1,function(f,h){0>f&&(b.vk||(b.vk=!0),f=255);b.Fd||ob(a.qa,c,f);(d=h)&&setTimeout(function(){Si(b)||Gd(a,b)},0)})}(c)):8==b.bm?(c=mb(a.qa,c),0>b.Ai.call(b.$g,b.Eh,c)&&(b.Yc=!0)):b.Yc=!0),!d&&!Si(b););}
+function Si(a){if(!a.Yc&&0<=--a.count&&(a.mode&32?(a.Ob[0]--,0>a.Ob[0]&&(a.Ob[0]=255,a.Ob[1]--,0>a.Ob[1]&&(a.Ob[1]=255))):(a.Ob[0]++,255>3,e=a.ub[d];e.Hb|=1<<(b&7);e.kg=c||0;1==d&&(a.ub[0].Hb|=4);Vi(a,d)}
+function Zi(a,b){var c=b>>3,d=a.ub[c],e=1<<(b&7);d.Hb&e&&(d.Hb&=~e,1!=c||d.Hb||(a.ub[0].Hb&=-5),Vi(a,c))}function Ed(a,b){void 0===b&&(b=0);var c=-1,d=a.ub[b];if(d.kg)c=-2,d.kg--;else for(var e=d.Hb&((d.Fc|d.vd)^255),f=d.Be+1;;){var f=f&7,h=1<>6;if(3!=a){c=b&1;var d=b&14;if(b&=48){var e=this.Gb[a];e.yg=b;e.mode=d;e.ek=c;e.Ic=[0,0];e.Zb=[0,0];e.Wf=[0,0];e.kd=!1;e.Zf=!1;e.ff=!1;aj(this,a);0==a&&Zi(this,0);2==a&&255==this.ub[0].vd&&77==this.yc&&(a=this.Gb[0],a.Xc[0]=a.Ic[0],a.Xc[1]=a.Ic[1],a.qe=F(this.T,this.mh))}else oi(this,a),b=this.Gb[a],b.Wf[0]=b.Zb[0],b.Wf[1]=b.Zb[1],b.Zf=!0,aj(this,a)}};
+function cj(a,b){var c=a.Gb[b],d=c.Ic[1]<<8|c.Ic[0];d||(d=1==c.hd?256:65536);return d}function aj(a,b){var c=a.Gb[b];c.fe=32==c.yg?1:0;c.hd=48==c.yg?2:1}
+function oi(a,b,c){var d=a.Gb[b];if(d.ff&&(2!=b||a.yc&1)){var e=F(a.T,a.mh),f=(e-d.qe)/a.Jl|0;0>f&&(d.qe=e,f=0);var h=cj(a,b),g=a.Gb[b],l=g.Xc[1]<<8|g.Xc[0];l||(l=1==g.hd?256:65536);g=l-f;0==d.mode?(0>=g&&(g=0),g||(d.kd=!0,d.ff=!1,b||Yi(a,0))):4==d.mode?(d.kd=1!=g,0>=g&&(g=h+g,0>=g&&(g=h),d.Xc[0]=g&255,d.Xc[1]=g>>8,d.qe=e,!b&&d.kd&&Yi(a,0))):6==d.mode&&(g-=f,0>=g&&(d.kd=!d.kd,g=h+g,0>=g&&(g=h),d.Xc[0]=g&255,d.Xc[1]=g>>8,d.qe=e,!b&&d.kd&&Yi(a,0)));d.Zb[0]=g&255;d.Zb[1]=g>>8;c&&(a.qe=0)}return d}
+function Yb(a,b){for(var c=0;c=di){var c=0,d=a.T.ba.Hd,e=F(a.T,a.mh);if(0<=a.fg&&(c=e-a.fg,Math.floor(c/d)&&60<=++a.ra[0]&&(a.ra[0]=0,60<=++a.ra[2]&&(a.ra[2]=0,24<=++a.ra[4])))){a.ra[4]=0;a.ra[6]=a.ra[6]%7+1;var f=a.ra[9],h=qa[a.ra[8]-1];28==h&&0===f%4&&(f%100||0===f%400)&&h++;++a.ra[7]>h&&(a.ra[7]=1,12<++a.ra[8]&&(a.ra[8]=1,a.ra[9]=(a.ra[9]+1)%100))}a.fg=e-c%d}}
+k.qn=function(a,b){var c=this.Tg;this.Pf&16&&(this.yc&128?c=this.cd:this.fb&&(c=dj(this.fb)));this.da(a,null,b,"PPI_A",ej,c);return c};k.Ho=function(a,b,c){this.da(a,b,c,"PPI_A",ej);this.Tg=b};k.rn=function(a,b){var c=this.yc;this.da(a,null,b,"PPI_B",ej,c);return c};k.Io=function(a,b,c){this.da(a,b,c,"PPI_B",ej);fj(this,b);this.fb&&gj(this.fb,b&128?!1:!0,b&64?!0:!1)};function fj(a,b){var c=!!(b&2),d=!!(a.yc&2);a.yc=b;c!=d&&Xb(a,c)}
+k.sn=function(a,b){var c=0,c=this.Ia==Zh?this.yc&4?c|this.We&15:c|this.We>>4&1:this.yc&8?c|this.cd>>4:c|this.cd&15;this.yc&1&&oi(this,2).kd&&(c=this.yc&2?c|32:c|16);this.da(a,null,b,"PPI_C",ej|Cb,c);return c};k.Jo=function(a,b,c){this.da(a,b,c,"PPI_C",ej);this.di=b};k.tn=function(a,b){var c=this.Pf;this.da(a,null,b,"PPI_CTRL",ej,c);return c};k.Ko=function(a,b,c){this.da(a,b,c,"PPI_CTRL",ej);this.Pf=b};
+k.Gm=function(a,b){var c=this.Og;this.da(a,null,b,"8042_OUTBUFF",hj,c);this.jb&=-258;var d=this.fb&&dj(this.fb,!0);d&&ij(this,d);return c};k.Zn=function(a,b,c){this.da(a,b,c,"8042_INBUF.DATA",hj);if(this.jb&8)switch(this.ud){case 96:jj(this,b);break;case 209:kj(this,b);break;default:if(jj(this,this.Zd&-17),this.fb){a=-1;switch(b){case 255:a=250,lj(this.fb)}ij(this,a)}}this.ud=b;this.jb&=-9};k.Hm=function(a,b){var c=this.yc&-209|(F(this.T)&64?16:0);this.da(a,null,b,"8042_RWREG",hj|mj,c);return c};
+k.$n=function(a,b,c){this.da(a,b,c,"8042_RWREG",hj);fj(this,b)};k.Im=function(a,b){this.da(a,null,b,"8042_STATUS",hj,this.jb);var c=this.jb&255;this.jb&256&&(this.jb|=1,this.jb&=-257);return c};
+k.Yn=function(a,b,c){this.da(a,b,c,"8042_INBUFF.CMD",hj);this.ud=b;this.jb|=8;a=0;240<=this.ud&&(a=this.ud^15,this.ud=240);switch(this.ud){case 192:ij(this,this.ze);break;case 173:jj(this,this.Zd|16);break;case 174:jj(this,this.Zd&-17);break;case 170:this.fb&&nj(this.fb,!0);jj(this,this.Zd|16);ij(this,85);kj(this,3);break;case 224:ij(this,this.Zd&16?0:1);break;case 240:a&1&&Rc(this.T)}};function jj(a,b){a.Zd=b;a.jb=a.jb&-5|b&4;a.fb&&gj(a.fb,!!(b&8),!(b&16))&&ij(a,dj(a.fb,!0))}
+function ij(a,b){0<=b&&(a.Og=b,a.jb&=-2,a.jb|=256)}function kj(a,b){a.bi=b;ib(a.qa,!!(b&2));b&1||Rc(a.T)}k.Wm=function(a,b){this.da(a,null,b,"CMOS_ADDR",pi,this.Ae);return this.Ae};k.po=function(a,b,c){this.da(a,b,c,"CMOS_ADDR",pi);this.Ae=b;this.Sg=b&128?0:128};k.Xm=function(a,b){var c=this.Ae&63,d=13>=c?qi(this,c):this.ra[c];this.da(a,null,b,"CMOS_DATA["+t(c)+"]",pi,d);return d};
+k.qo=function(a,b,c){var d=this.Ae&63;this.da(a,b,c,"CMOS_DATA["+t(d)+"]",pi);a=this.ra;13>=d&&10>d&&(c=!1,this.ra[11]&4||(b=10*(b>>4)+(b&15),c=!0),4==d||5==d)&&(c&&12=b?b=12==b?0:b:(b-=116,b=24==b?12:b)));a[d]=b};k.on=function(a,b){this.da(a,null,b,"MFG_DATA",ej,this.Nf);return this.Nf};k.Eo=function(a,b,c){this.da(a,b,c,"MFG_DATA",ej);this.Nf=b};k.Go=function(a,b,c){this.da(a,b,c,"NMI",ej);this.Sg=b};
+k.En=function(a){var b=this.T.H>>8;this.ca&&E(this.ca,oj)&&(Zc(this.ca,26,a),$c(this.T,a,function(a,d){return function(e){d=F(a.T)-d;var f,h=a.T.K&255,g=a.T.K>>8,l=a.T.K&255,n=a.T.K>>8;if(2==b||3==b)f=" CH(hour)="+v(g)+" CL(min)="+t(h)+" DH(sec)="+t(n);else if(4==b||5==b)f=" CX(year)="+v(a.T.J)+" DH(month)="+t(n)+" DL(day)="+t(l);ad(a.ca,26,e,d,f)}}(this,F(this.T))));return!0};function $h(a,b){if(void 0===a)return b;for(var c=0,d=1,e=0;ec||2E4>8&255,this.xb[c++]=f[b]>>16&255,this.xb[c++]=f[b]>>24&255;else this.xb=d;this.Uh=d.symbols;if(!this.xb.length){x("Empty ROM: "+a);return}if(1==this.xb.length){x(this.xb[0]);return}}catch(h){this.Ia("ROM data error: "+
-h.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.xb=Array(a.length),d=0;d>8&255,this.Ab[c++]=f[b]>>16&255,this.Ab[c++]=f[b]>>24&255;else this.Ab=d;this.Xh=d.symbols;if(!this.Ab.length){x("Empty ROM: "+a);return}if(1==this.Ab.length){x(this.Ab[0]);return}}catch(h){this.Ka("ROM data error: "+
+h.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.Ab=Array(a.length),d=0;dthis.Jg?21:23,c=a.qa[b]|a.qa[b+1]<<8,c=c+(this.Ld>>10);a.qa[b]=c&255;a.qa[b+1]=c>>8;zi(a)}}else x("No RAM allocated")};
-Fa(function(){for(var a=D(window.document,"pcjs","ram"),b=0;bthis.Mg?21:23,c=a.ra[b]|a.ra[b+1]<<8,c=c+(this.Od>>10);a.ra[b]=c&255;a.ra[b+1]=c>>8;zi(a)}}else x("No RAM allocated")};
+Fa(function(){for(var a=D(window.document,"pcjs","ram"),b=0;ba.wc.length){if(!(!d&&!a.Th[c]||d&&a.Th[c])){a.Th[c]=d;a.Oa("scan code "+t(b)+" buffered");a.wc.push(b);1==a.wc.length&&a.ma&&Yi(a.ma,1);for(var e in zj)if(zj[e]==c){(c=a.va["key-"+e])&&void 0!==d&&(c.style.color=d?"#ffffff":"#000000",c.style.backgroundColor=d?"#000000":"#ffffff");break}}}else 20==a.wc.length&&a.wc.push(255),a.Oa("scan code buffer overflow")}function Ej(a,b){var c=b?a.In:a.Hn;a.T&&a.T.hd&&(c/=a.T.hd);return c}
-function Fj(a,b){!a.Ne||void 0!==b&&b==a.Ne||(clearTimeout(a.nd[a.Ne]),Gj(a,a.Ne,!1))}
-function Bj(a,b,c){var d,e=!c,f=b.keyCode;c&&(a.Jl=f);240==f+224?(a.Ha&=-2,c&&(a.Ha|=1),f+=224,e=!1):241==f+224?(a.Ha&=-5,c&&(a.Ha|=4),f+=224,e=!1):242==f+224?(a.Ha&=-9,c&&(a.Ha|=8),f+=224,e=!1):244==f+224?(a.Ha&=-17,c&&(a.Ha|=16),f+=224,d=Cj(a,f)):91==f?(a.Ha&=-33,c&&(a.Ha|=32),e=!1,d=!0):9==f||27==f||8==f?(8==f&&4==(a.Ha&12)&&(f=254),d=c?!Cj(a,f):!1):void 0!==S[f+224]?f+=224:b.altKey||b.ctrlKey?65<=f&&90>=f&&(f+=32):d=!0;e&&(a.Ha&=-33,a.ok||f!=a.Jl||Fj(a));void 0===d&&(d=!Gj(a,f,c));return d}
-function Cj(a,b,c){var d=!1;Fj(a,b);Gj(a,b,!0)&&(c?Gj(a,b,!1):(c=!1,a.nd[b]&&(clearTimeout(a.nd[b]),c=!0),c=Ej(a,c),a.nd[a.Ne=b]=setTimeout(function(a){return function(){Gj(a,b,!1)}}(a),c)),d=!0);return d}
-function Gj(a,b,c){var d=!1;c||(a.nd[b]=null,a.Ne==b&&(a.Ne=0));var e=S[b];void 0===e&&1<=b&&26>=b&&(e=S[b+64]&255|61696);if(void 0!==e){14==e&&12==(a.Ha&12)&&(e=83);b=[];for(b.push(e&255|(c?0:128));e>>=8;){var d=0,f=e&255;240==f?a.Ha&17||(d=42):224==f?a.Ha&18||(d=54):241==f?a.Ha&4||(d=29):242==f&&(a.Ha&8||(d=56));d&&(c?b.unshift(d):b.push(d|128))}for(c=0;ca.wc.length){if(!(!d&&!a.Wh[c]||d&&a.Wh[c])){a.Wh[c]=d;a.Ra("scan code "+t(b)+" buffered");a.wc.push(b);1==a.wc.length&&a.na&&Yi(a.na,1);for(var e in zj)if(zj[e]==c){(c=a.xa["key-"+e])&&void 0!==d&&(c.style.color=d?"#ffffff":"#000000",c.style.backgroundColor=d?"#000000":"#ffffff");break}}}else 20==a.wc.length&&a.wc.push(255),a.Ra("scan code buffer overflow")}function Ej(a,b){var c=b?a.Ln:a.Kn;a.T&&a.T.ba.ld&&(c/=a.T.ba.ld);return c}
+function Fj(a,b){!a.Qe||void 0!==b&&b==a.Qe||(clearTimeout(a.qd[a.Qe]),Gj(a,a.Qe,!1))}
+function Bj(a,b,c){var d,e=!c,f=b.keyCode;c&&(a.Nl=f);240==f+224?(a.Ja&=-2,c&&(a.Ja|=1),f+=224,e=!1):241==f+224?(a.Ja&=-5,c&&(a.Ja|=4),f+=224,e=!1):242==f+224?(a.Ja&=-9,c&&(a.Ja|=8),f+=224,e=!1):244==f+224?(a.Ja&=-17,c&&(a.Ja|=16),f+=224,d=Cj(a,f)):91==f?(a.Ja&=-33,c&&(a.Ja|=32),e=!1,d=!0):9==f||27==f||8==f?(8==f&&4==(a.Ja&12)&&(f=254),d=c?!Cj(a,f):!1):void 0!==S[f+224]?f+=224:b.altKey||b.ctrlKey?65<=f&&90>=f&&(f+=32):d=!0;e&&(a.Ja&=-33,a.sk||f!=a.Nl||Fj(a));void 0===d&&(d=!Gj(a,f,c));return d}
+function Cj(a,b,c){var d=!1;Fj(a,b);Gj(a,b,!0)&&(c?Gj(a,b,!1):(c=!1,a.qd[b]&&(clearTimeout(a.qd[b]),c=!0),c=Ej(a,c),a.qd[a.Qe=b]=setTimeout(function(a){return function(){Gj(a,b,!1)}}(a),c)),d=!0);return d}
+function Gj(a,b,c){var d=!1;c||(a.qd[b]=null,a.Qe==b&&(a.Qe=0));var e=S[b];void 0===e&&1<=b&&26>=b&&(e=S[b+64]&255|61696);if(void 0!==e){14==e&&12==(a.Ja&12)&&(e=83);b=[];for(b.push(e&255|(c?0:128));e>>=8;){var d=0,f=e&255;240==f?a.Ja&17||(d=42):224==f?a.Ja&18||(d=54):241==f?a.Ja&4||(d=29):242==f&&(a.Ja&8||(d=56));d&&(c?b.unshift(d):b.push(d|128))}for(c=0;cc.length)c=[!1,0,null,null,0,Array(Vj)];this.ba=a.ba;this.type=e[0];this.port=e[1];this.ge=b;this.Ra=e[2];this.Mb=e[3];this.Tc=d||e[4];65536<=this.Tc&&720896<=this.Ra&&(this.Mb=Math.min(this.Tc>>2,32768));this.lc=c[0];this.zc=c[1];this.Ze=c[2];this.tf=c[3];this.nc=c[4]&255;this.nh=c[4]>>8&255;this.cc=c[5];this.Fi=Vj;this.Kg=Wj;if(5==b){this.Fi=Xj;this.Kg=Yj;b=c[6];void 0===b&&(b=[!1,0,Array(20),0,3==f?0:1,0,0,Array(5),
-0,0,0,Array(9),0,[this.Ra,this.Mb,this.Tc],Array(this.Tc>>2),771,0,4294967295,0,4294967295,0,4294967295,0,0,0]);this.ed=b[0];this.yd=b[1];this.Od=b[2];this.Wh=Zj;this.Oh=b[3];this.Zf=b[4];this.lh=b[5];this.Ad=b[6];this.Cf=b[7];this.Yh=ak;this.zi=b[8];this.Ai=b[9];this.zd=b[10];this.te=b[11];this.Xh=bk;this.ub=b[12];d=b[13];"number"==typeof d&&(d=[this.Ra,this.Mb,d]);this.Ra=d[0];this.Mb=d[1];d=this.Tc>>2;if((this.ad=b[14])&&this.ad.lengthc.length)c=[!1,0,null,null,0,Array(Vj)];this.ca=a.ca;this.type=e[0];this.port=e[1];this.je=b;this.Ua=e[2];this.Nb=e[3];this.Vc=d||e[4];65536<=this.Vc&&720896<=this.Ua&&(this.Nb=Math.min(this.Vc>>2,32768));this.lc=c[0];this.Ac=c[1];this.bf=c[2];this.wf=c[3];this.nc=c[4]&255;this.qh=c[4]>>8&255;this.cc=c[5];this.Hi=Vj;this.Ng=Wj;if(5==b){this.Hi=Xj;this.Ng=Yj;b=c[6];void 0===b&&(b=[!1,0,Array(20),0,3==f?0:1,0,0,Array(5),
+0,0,0,Array(9),0,[this.Ua,this.Nb,this.Vc],Array(this.Vc>>2),771,0,4294967295,0,4294967295,0,4294967295,0,0,0]);this.jd=b[0];this.Bd=b[1];this.Rd=b[2];this.Zh=Zj;this.Rh=b[3];this.cg=b[4];this.oh=b[5];this.Dd=b[6];this.Ff=b[7];this.ai=ak;this.Bi=b[8];this.Ci=b[9];this.Cd=b[10];this.we=b[11];this.$h=bk;this.xb=b[12];d=b[13];"number"==typeof d&&(d=[this.Ua,this.Nb,d]);this.Ua=d[0];this.Nb=d[1];d=this.Vc>>2;if((this.ed=b[14])&&this.ed.length>8&255)}
-var ek=[,,function(a){a+=this.offset;return(this.ga.ub=this.sa[a])>>this.ga.yj&255},function(a){a+=this.offset;var b=a&-2;return(a&1?this.sa[b]>>8:this.sa[b])&255}];ek[16]=function(a){a+=this.offset;a=this.sa[a];for(var b=this.ga.Hi&this.ga.Ii,c=0,d=128;d;)(a&b)==b&&(c|=d),b>>>=1,d>>=1;return c};ek[512]=function(a,b){var c=a+this.offset,d;d=this.sa[c]&~this.ga.fb|(b|b<<8|b<<16|b<<24)&this.ga.fb;d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};
-ek[1024]=function(a,b){var c=a+this.offset;b=b>>this.ga.jd|b<<8-this.ga.jd&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ga.me|this.ga.Ke;d=d&this.ga.fb|this.sa[c]&~this.ga.fb;d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};
-ek[1536]=function(a,b){var c=a+this.offset;b=b>>this.ga.jd|b<<8-this.ga.jd&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ga.me|this.ga.Ke;d&=this.ga.ub;d=d&this.ga.fb|this.sa[c]&~this.ga.fb;d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};
-ek[2560]=function(a,b){var c=a+this.offset;b=b>>this.ga.jd|b<<8-this.ga.jd&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ga.me|this.ga.Ke;d|=this.ga.ub;d=d&this.ga.fb|this.sa[c]&~this.ga.fb;d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};
-ek[3584]=function(a,b){var c=a+this.offset;b=b>>this.ga.jd|b<<8-this.ga.jd&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ga.me|this.ga.Ke;d^=this.ga.ub;d=d&this.ga.fb|this.sa[c]&~this.ga.fb;d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};ek[768]=function(a,b){a+=this.offset;var c,d=a&-2;c=this.ga.fb&(d==a?16711935:4278255360);c=(b|b<<8|b<<16|b<<24)&c|this.sa[d]&~c;c=c&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[d]!=c&&(this.sa[d]=c,this.jb=!0)};
-ek[4096]=function(a){a+=this.offset;var b=this.sa[a]&~this.ga.fb|this.ga.ub&this.ga.fb;this.sa[a]!=b&&(this.sa[a]=b,this.jb=!0)};ek[8192]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d&this.ga.fb|this.sa[c]&~this.ga.fb,d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};ek[24576]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d&this.ga.ub,d=d&this.ga.fb|this.sa[c]&~this.ga.fb,d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};
-ek[40960]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d|this.ga.ub,d=d&this.ga.fb|this.sa[c]&~this.ga.fb,d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};ek[57344]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d^this.ga.ub,d=d&this.ga.fb|this.sa[c]&~this.ga.fb,d=d&this.ga.lb|this.ga.ub&~this.ga.lb;this.sa[c]!=d&&(this.sa[c]=d,this.jb=!0)};
-function lk(a){var b=[];if(void 0!==a.ge){b[0]=a.lc;b[1]=a.zc;b[2]=a.Ze;b[3]=a.tf;b[4]=a.nc|a.nh<<8;b[5]=a.cc;if(5==a.ge){var c=[];c[0]=a.ed;c[1]=a.yd;c[2]=a.Od;c[3]=a.Oh;c[4]=a.Zf;c[5]=a.lh;c[6]=a.Ad;c[7]=a.Cf;c[8]=a.zi;c[9]=a.Ai;c[10]=a.zd;c[11]=a.te;c[12]=a.ub;c[13]=[a.Ra,a.Mb,a.Tc];var d;a:if(d=a.ad){var e=0,f=[];if(void 0!==d[0])for(var h=0;2>h;h++)for(var g=h;g>1;f[e++]=l;g=n}if(f.lengtha&&(a=0);for(var c="",d=0;8>d;d++){for(var n=q(b.Ra+a)+":",p=0;8>p&&a>8&255)}
+var ek=[,,function(a){a+=this.offset;return(this.ha.xb=this.va[a])>>this.ha.Bj&255},function(a){a+=this.offset;var b=a&-2;return(a&1?this.va[b]>>8:this.va[b])&255}];ek[16]=function(a){a+=this.offset;a=this.va[a];for(var b=this.ha.Ji&this.ha.Ki,c=0,d=128;d;)(a&b)==b&&(c|=d),b>>>=1,d>>=1;return c};ek[512]=function(a,b){var c=a+this.offset,d;d=this.va[c]&~this.ha.hb|(b|b<<8|b<<16|b<<24)&this.ha.hb;d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};
+ek[1024]=function(a,b){var c=a+this.offset;b=b>>this.ha.md|b<<8-this.ha.md&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ha.pe|this.ha.Ne;d=d&this.ha.hb|this.va[c]&~this.ha.hb;d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};
+ek[1536]=function(a,b){var c=a+this.offset;b=b>>this.ha.md|b<<8-this.ha.md&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ha.pe|this.ha.Ne;d&=this.ha.xb;d=d&this.ha.hb|this.va[c]&~this.ha.hb;d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};
+ek[2560]=function(a,b){var c=a+this.offset;b=b>>this.ha.md|b<<8-this.ha.md&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ha.pe|this.ha.Ne;d|=this.ha.xb;d=d&this.ha.hb|this.va[c]&~this.ha.hb;d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};
+ek[3584]=function(a,b){var c=a+this.offset;b=b>>this.ha.md|b<<8-this.ha.md&255;var d;d=(b|b<<8|b<<16|b<<24)&this.ha.pe|this.ha.Ne;d^=this.ha.xb;d=d&this.ha.hb|this.va[c]&~this.ha.hb;d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};ek[768]=function(a,b){a+=this.offset;var c,d=a&-2;c=this.ha.hb&(d==a?16711935:4278255360);c=(b|b<<8|b<<16|b<<24)&c|this.va[d]&~c;c=c&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[d]!=c&&(this.va[d]=c,this.lb=!0)};
+ek[4096]=function(a){a+=this.offset;var b=this.va[a]&~this.ha.hb|this.ha.xb&this.ha.hb;this.va[a]!=b&&(this.va[a]=b,this.lb=!0)};ek[8192]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d&this.ha.hb|this.va[c]&~this.ha.hb,d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};ek[24576]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d&this.ha.xb,d=d&this.ha.hb|this.va[c]&~this.ha.hb,d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};
+ek[40960]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d|this.ha.xb,d=d&this.ha.hb|this.va[c]&~this.ha.hb,d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};ek[57344]=function(a,b){var c=a+this.offset,d=Rj[b&15],d=d^this.ha.xb,d=d&this.ha.hb|this.va[c]&~this.ha.hb,d=d&this.ha.nb|this.ha.xb&~this.ha.nb;this.va[c]!=d&&(this.va[c]=d,this.lb=!0)};
+function lk(a){var b=[];if(void 0!==a.je){b[0]=a.lc;b[1]=a.Ac;b[2]=a.bf;b[3]=a.wf;b[4]=a.nc|a.qh<<8;b[5]=a.cc;if(5==a.je){var c=[];c[0]=a.jd;c[1]=a.Bd;c[2]=a.Rd;c[3]=a.Rh;c[4]=a.cg;c[5]=a.oh;c[6]=a.Dd;c[7]=a.Ff;c[8]=a.Bi;c[9]=a.Ci;c[10]=a.Cd;c[11]=a.we;c[12]=a.xb;c[13]=[a.Ua,a.Nb,a.Vc];var d;a:if(d=a.ed){var e=0,f=[];if(void 0!==d[0])for(var h=0;2>h;h++)for(var g=h;g>1;f[e++]=l;g=n}if(f.lengtha&&(a=0);for(var c="",d=0;8>d;d++){for(var n=q(b.Ua+a)+":",p=0;8>p&&a>1&255,d=d>>8&-129,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?7:112)|8&d>>8),pb(this.oa,b,c|d<<8);Lb(this,!0)}};function uk(a){a.la.Zf&1?(a.Sc=a.di,a.yb=a.la):(a.Sc=a.la,a.yb=a.Wg)}k.save=function(){var a=new I(this);a.set(0,lk(this.di));a.set(1,lk(this.Wg));a.set(2,[this.je,this.kd,this.Gd]);a.set(3,lk(this.la));return a.data()};
-k.restore=function(a){var b=a[2];this.je=b[0];this.kd=b[1];this.Gd=b[2];this.Ea=null;this.Sc=this.di=new Tj(this,1,a[0]);this.yb=this.Wg=new Tj(this,3,a[1]);this.la=new Tj(this,5,a[3],this.Tc);this.la.lc&&uk(this);vk(this);if(!xk(this))return!1;yk(this);return!0};
-k.Rn=function(a,b,c){if(c)this.Ia("Unable to load font ROM image (error "+c+")");else{try{var d=eval("("+b+")");if(!d.length){x("Empty font ROM image: "+a);return}if(1==d.length){x(d[0]);return}if(8192==d.length)wj(this,d,[0,6144]);else{this.Ia("Unrecognized font data length ("+d.length+")");return}}catch(e){this.Ia("Font ROM data error: "+e.message);return}this.Qa()}};
-function zk(a,b){if(1==b)return a.qd[0]=X[0],a.qd[1]=X[7],a.qd;if(2==b){var c=a.Ea.Ze;if(a.Ea===a.la){var d=a.la.Od[0],c=d&7;d&16&&(c|=8);18!=a.la.Od[1]&&(c|=32)}a.qd[0]=X[c&15];c=c&32?Pj:Oj;for(d=0;dHa||!U?Ha:8,ub=V.createImageData(n.jc,n.kc),J=0;256>J;J++){for(R=0;R=Ha-2,ea=tb[R>(8<=w&&176<=J&&223>=J?7:w)?s:ic;Ck(ub,Ua,Jc,jc);z&&Ck(ub,Ua+1,Jc,jc)}V.putImageData(ub,(J&15)*n.jc,(J>>4)*n.kc)}n.Ve[u]="#"+t(s[0])+t(s[1])+t(s[2]);n.Vj[u]=s;n.Qh[u]=Nb;n=!0}}a.Rd[b]=r;return n}function Dk(a){0a.Ce&&(a.Ce=0):a.Ce=-1}
-function yk(a){if(a.Rb){for(var b=10;15>=b;b++)if(null==a.Ea.cc[b])return;var c=a.Ea.cc[10],b=c&31,d=a.Ea.cc[11]&31,e=a.Ea.cc[9]&31,f=!1;a.Ea===a.la&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)Ek(a);else{c=a.Ea.cc[15]+((a.Ea.cc[14]&63)<<8);a.Kc!=c&&(Ek(a),a.Kc=c);d=d-b+1;if(a.Zl!=b||a.jk!=d)a.Zl=b,a.jk=d;a.de=e+1;Dk(a)}}}
-function Ek(a){if(0<=a.Kc){if(void 0!==a.dc){var b=a.dc[a.Kc];if(b&131072){var b=b&-131073,c=a.Kc%a.Ab,d=Math.floor(a.Kc/a.Ab);a.Rb&&a.Rd[a.Rb]&&(a.$e&&Fk(a,c,d,b,a.$e),Fk(a,c,d,b));a.dc[a.Kc]=b}}a.Kc=-1}}
-function Gk(a){var b;a=a.Ea;var c=a.te[5];if(null!=c){b=2;var d=512,e=a.te[3]&31;switch(c&3){case 0:if(e){d=1024;switch(e&24){case 8:d=1536;break;case 16:d=2560;break;case 24:d=3584}a.jd=e&7}break;case 1:d=4096;break;case 2:switch(e&24){default:d=8192;break;case 8:d=24576;break;case 16:d=40960;break;case 24:d=57344}}c&8&&(b=16);c&16&&(b|=1,d|=256);b|=d}return b}k.Re=function(a){var b=this.Ea;null!=a&&b&&a!=b.uh&&(b.Lh(a),this.oa.Lh(b.Ra,b.Mb,b.Gf))};
-function xk(a,b){var c,d=a.Gd,e=a.Ea;if(e)if(1==e.ge)d=Jj;else if(5==e.ge){var d=null,f=e.Tc>>2,h=32768f&&(d=c?13:14):c&&(d-=2));c=Gk(a)}}else e.zc&8&&(e.zc&2?(d=e.zc&16?6:5,e.zc&4||(d-=1)):(d=e.zc&1?3:1,e.zc&4&&(d-=
-1)));else a.Gd=null,null==d&&(d=a.kd);if(!wk(a,d,b))return!1;a.Re(c);return!0}
-function wk(a,b,c){if(null!=b&&(b!=a.Gd||c)){a.gm=0;a.Gd=b;b=a.Ea||(b==Jj?a.Sc:a.yb);if(b!=a.Ea||b.Ra!=a.Ra||b.Mb!=a.Mb){Ek(a);if(a.Ra){if(!lb(a.oa,a.Ra,a.Mb))return!1;a.Ea&&(a.Ea.lc=!1)}a.Ea=b;b.lc=!0;a.Ra=b.Ra;a.Mb=b.Mb;if(!jb(a.oa,b.Ra,b.Mb,!1,b===a.la?b:null))return!1}a.Rb=0;a.Ab=a.xh;a.qc=a.Li;a.Gi=Ij[Jj][2];b=0;var d=Ij[a.Gd];d&&(a.Ab=d[0],a.qc=d[1],a.Gi=d[2],b=d[3]||0,a.Rb=d[4],4==a.je&&a.Ea===a.la&&3==a.Rb&&(7==a.la.cc[9]?a.qc=43:a.Rb=5));a.Bk=a.Ab*a.qc;a.wh=a.Bk/a.Gi;a.ei=(a.wh<<1)+b;a.gk=
-b?a.ei+b>>1:0;13<=a.Gd&&(a.wh<<=1);a.Rd.length&&(a.vd=Math.floor(a.ud/a.Ab),a.wd=Math.floor(a.ee/a.qc),a.Rb?(b=a.Rd[a.Rb],d=a.Rd[a.Rb<<1],a.sm&&80==a.Ab?d&&a.vd>=3*d.jc>>2&&(a.Rb<<=1,b=d):(d&&a.vd>=d.jc&&(a.Rb<<=1,b=d),b&&(a.vd=b.jc,a.wd=b.kc)),a.Tf=a.Uf=0,b&&(a.Tf=a.Ab*b.jc,a.Uf=a.qc*b.kc)):(a.vd=a.wd=1,a.Tf=a.Ab,a.Uf=a.qc),a.qh=a.Uc.createImageData(a.Tf,a.Uf),a.Ye=window.document.createElement("canvas"),a.Ye.width=a.Tf,a.Ye.height=a.Uf,a.$e=a.Ye.getContext("2d"),a.Qj=a.Rj=0,a.gi=a.ud,a.hi=a.ee,
-b=a.ud-a.Ab*a.vd,d=a.ee-a.qc*a.wd,0>1,a.gi-=b),0>1,a.hi-=d),b||d)&&(a.Uc.fillStyle=a.Hb.style.backgroundColor,a.Uc.fillRect(0,0,a.ud,a.ee));!1!==c?Lb(a,!0):Hk(a,!0)}return!0}function Ck(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b+0]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function Hk(a,b){var c;if(b){if(c=a.wh,void 0===a.dc||a.dc.length!=c)a.dc=Array(c)}else{if(void 0===a.dc)return;c=a.dc.length}for(var d=0;d>8;d=h&15;var g=a.Rd[a.Rb];g.Bf&&(d=g.Bf[d]);var l=h>>4&15;g.Bf&&(l=g.Bf[l]);e?(b*=g.jc,c*=g.kc,e.fillStyle=g.Ve[l],e.fillRect(b,c,g.jc,g.kc)):(b=b*a.vd+a.Qj,c=c*a.wd+a.Rj,a.Uc.fillStyle=g.Ve[l],a.Uc.fillRect(b,c,a.vd,a.wd));h&256&&(l=(f&15)*g.jc,f=(f>>4)*g.kc,e?e.drawImage(g.Qh[d],l,f,g.jc,g.kc,b,c,g.jc,g.kc):a.Uc.drawImage(g.Qh[d],l,f,g.jc,g.kc,b,c,a.vd,a.wd));h&512&&(f=a.Zl,h=a.jk,e?(a.de&&a.de!==g.kc&&(f=Math.floor(f*g.kc/a.de),h=Math.floor(h*g.kc/a.de)),
-e.fillStyle=g.Ve[d],e.fillRect(b,c+f,g.jc,h)):(a.de&&a.de!==a.wd&&(f=Math.floor(f*a.wd/a.de),h=Math.floor(h*a.wd/a.de)),a.Uc.fillStyle=g.Ve[d],a.Uc.fillRect(b,c+f,a.vd,h)))}
-function Lb(a,b){if(a.Jb){var c=!1;a.Ea&&(a.Ea===a.la?a.la.yd&32&&(c=!0):a.Ea.zc&8&&(c=!0));if(c||b){if(b)Hk(a,!0);else if(void 0===a.dc)return;var d=!1;!(b||++a.gm&15)&&0<=a.Ce&&(a.Ce++,d=!0);var e=0,f=a.Bk,c=a.Ea.Ra,h=c+a.Ea.Mb,g=(a.Ea.cc[12]<<8)+a.Ea.cc[13];a.Rb&&(g<<=1);var c=c+g,l=a.ei;c+l>h&&(l=h-c,0>l&&(l=0));h=c+l;if(g=!b){for(var g=a.oa,n=!0,p=c>>g.pb;0a.Kc)return;e=a.Kc;f=e+1}}if(a.Rb){if(a.Rd[a.Rb]){d=
-0;g=a.Be=0;l=1048575;a.Ea.zc&32&&(g=32768,l&=~g,a.Ce&2||(l&=-65537));for(c+=e<<1;c>8|(r&
-255)<<8;s=g;var Ha=16;p>=l))>>(Ha-=l);Ck(a.qh,p++,u,n[ic])}p>B&&(B=p);u=ha&&(ha=u+1)}e+=2;h++;if(p>=a.Ab){p=0;u+=2;if(u>a.qc)break;u==a.qc&&(u=1,e=c+a.gk)}}zU;U++)ha=B&2155905152,0>ha&&(ha+=4294967296),
-ha=Sj[ha]||0,Ck(a.qh,g++,l,h[ha]),B<<=1;g>p&&(p=g);l=z&&(z=l+1)}e++;if(g>=a.Ab&&(g=0,++l>a.qc))break}n>2),c=this.la.Oh&-17|(this.Mg&1<f&&(f=0);f%b.Ji>b.Ln&&(d|=1);f%=b.Ek;f>b.On&&(d|=8);b.Pi=e-f;b===a.la?(d|=b.tf&48^48,b.ed=!1):d=(b.tf^=9)|240;b.tf=d;a.ca(b.port+6,null,c,b===a.la?"STATUS1":"STATUS",d);return d}k.Oa=function(a,b){this.ba&&(b||E(this.ba,rk))&&this.ba.message(a)};k.ca=function(a,b,c,d,e){this.ba&&this.ba.ca(this,a,b,c,d,rk,e)};
-var nk={948:T.prototype.gn,949:T.prototype.fn,952:T.prototype.hn,954:T.prototype.jn,980:T.prototype.Pm,981:T.prototype.Om,984:T.prototype.Qm,985:T.prototype.Nm,986:T.prototype.Rm},ok={948:T.prototype.zo,949:T.prototype.yo,952:T.prototype.Ao,980:T.prototype.ko,981:T.prototype.jo,984:T.prototype.lo,985:T.prototype.io},pk={960:T.prototype.xk,961:T.prototype.xk,962:T.prototype.tn,964:T.prototype.sn,965:T.prototype.rn,970:T.prototype.$m,972:T.prototype.Zm,974:T.prototype.Ym,975:T.prototype.Xm},qk={954:T.prototype.Il,
-960:T.prototype.Hl,961:T.prototype.Hl,962:T.prototype.Co,964:T.prototype.Jo,965:T.prototype.Io,970:T.prototype.uo,972:T.prototype.to,974:T.prototype.so,975:T.prototype.ro,986:T.prototype.Il};
+k.reset=function(){var a=!0,b=0;this.na&&(b=wi(this.na));var c=!1;if(this.Ia)switch(this.Ia){case "ega":var c=!0,d=Lj[this.Pg];d&&(b=d[0]);b||(b=4);break;case "mda":b=3;break;default:b=2}this.me!==b&&(this.me=b,a=!0);this.Ga=null;this.Uc=this.gi=new Tj(this,1);this.Bb=this.Zg=new Tj(this,3);c?(this.ma=new Tj(this,5,null,this.Vc),uk(this)):this.ma=new Tj;vk(this);this.Jd=null;this.nd=3==b?Jj:3;this.Fe=this.Mc=-1;this.Ee=0;wk(this,this.nd);if(this.Ga.Ua&&a){a=this.Ga.Ua+this.hi;for(b=this.Ga.Ua;b>1&255,d=d>>8&-129,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?7:112)|8&d>>8),pb(this.qa,b,c|d<<8);Lb(this,!0)}};function uk(a){a.ma.cg&1?(a.Uc=a.gi,a.Bb=a.ma):(a.Uc=a.ma,a.Bb=a.Zg)}k.save=function(){var a=new I(this);a.set(0,lk(this.gi));a.set(1,lk(this.Zg));a.set(2,[this.me,this.nd,this.Jd]);a.set(3,lk(this.ma));return a.data()};
+k.restore=function(a){var b=a[2];this.me=b[0];this.nd=b[1];this.Jd=b[2];this.Ga=null;this.Uc=this.gi=new Tj(this,1,a[0]);this.Bb=this.Zg=new Tj(this,3,a[1]);this.ma=new Tj(this,5,a[3],this.Vc);this.ma.lc&&uk(this);vk(this);if(!xk(this))return!1;yk(this);return!0};
+k.Un=function(a,b,c){if(c)this.Ka("Unable to load font ROM image (error "+c+")");else{try{var d=eval("("+b+")");if(!d.length){x("Empty font ROM image: "+a);return}if(1==d.length){x(d[0]);return}if(8192==d.length)wj(this,d,[0,6144]);else{this.Ka("Unrecognized font data length ("+d.length+")");return}}catch(e){this.Ka("Font ROM data error: "+e.message);return}this.Ta()}};
+function zk(a,b){if(1==b)return a.td[0]=X[0],a.td[1]=X[7],a.td;if(2==b){var c=a.Ga.bf;if(a.Ga===a.ma){var d=a.ma.Rd[0],c=d&7;d&16&&(c|=8);18!=a.ma.Rd[1]&&(c|=32)}a.td[0]=X[c&15];c=c&32?Pj:Oj;for(d=0;dHa||!U?Ha:8,ub=V.createImageData(n.jc,n.kc),J=0;256>J;J++){for(R=0;R=Ha-2,ea=tb[R>(8<=w&&176<=J&&223>=J?7:w)?s:jc;Ck(ub,Ua,Jc,kc);z&&Ck(ub,Ua+1,Jc,kc)}V.putImageData(ub,(J&15)*n.jc,(J>>4)*n.kc)}n.Ye[u]="#"+t(s[0])+t(s[1])+t(s[2]);n.Xj[u]=s;n.Th[u]=Ob;n=!0}}a.Ud[b]=r;return n}function Dk(a){0a.Fe&&(a.Fe=0):a.Fe=-1}
+function yk(a){if(a.Rb){for(var b=10;15>=b;b++)if(null==a.Ga.cc[b])return;var c=a.Ga.cc[10],b=c&31,d=a.Ga.cc[11]&31,e=a.Ga.cc[9]&31,f=!1;a.Ga===a.ma&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)Ek(a);else{c=a.Ga.cc[15]+((a.Ga.cc[14]&63)<<8);a.Mc!=c&&(Ek(a),a.Mc=c);d=d-b+1;if(a.cm!=b||a.lk!=d)a.cm=b,a.lk=d;a.ge=e+1;Dk(a)}}}
+function Ek(a){if(0<=a.Mc){if(void 0!==a.dc){var b=a.dc[a.Mc];if(b&131072){var b=b&-131073,c=a.Mc%a.Cb,d=Math.floor(a.Mc/a.Cb);a.Rb&&a.Ud[a.Rb]&&(a.cf&&Fk(a,c,d,b,a.cf),Fk(a,c,d,b));a.dc[a.Mc]=b}}a.Mc=-1}}
+function Gk(a){var b;a=a.Ga;var c=a.we[5];if(null!=c){b=2;var d=512,e=a.we[3]&31;switch(c&3){case 0:if(e){d=1024;switch(e&24){case 8:d=1536;break;case 16:d=2560;break;case 24:d=3584}a.md=e&7}break;case 1:d=4096;break;case 2:switch(e&24){default:d=8192;break;case 8:d=24576;break;case 16:d=40960;break;case 24:d=57344}}c&8&&(b=16);c&16&&(b|=1,d|=256);b|=d}return b}k.Ue=function(a){var b=this.Ga;null!=a&&b&&a!=b.xh&&(b.Oh(a),this.qa.Oh(b.Ua,b.Nb,b.Kf))};
+function xk(a,b){var c,d=a.Jd,e=a.Ga;if(e)if(1==e.je)d=Jj;else if(5==e.je){var d=null,f=e.Vc>>2,h=32768f&&(d=c?13:14):c&&(d-=2));c=Gk(a)}}else e.Ac&8&&(e.Ac&2?(d=e.Ac&16?6:5,e.Ac&4||(d-=1)):(d=e.Ac&1?3:1,e.Ac&4&&(d-=
+1)));else a.Jd=null,null==d&&(d=a.nd);if(!wk(a,d,b))return!1;a.Ue(c);return!0}
+function wk(a,b,c){if(null!=b&&(b!=a.Jd||c)){a.km=0;a.Jd=b;b=a.Ga||(b==Jj?a.Uc:a.Bb);if(b!=a.Ga||b.Ua!=a.Ua||b.Nb!=a.Nb){Ek(a);if(a.Ua){if(!lb(a.qa,a.Ua,a.Nb))return!1;a.Ga&&(a.Ga.lc=!1)}a.Ga=b;b.lc=!0;a.Ua=b.Ua;a.Nb=b.Nb;if(!jb(a.qa,b.Ua,b.Nb,!1,b===a.ma?b:null))return!1}a.Rb=0;a.Cb=a.Ah;a.qc=a.Oi;a.Ii=Ij[Jj][2];b=0;var d=Ij[a.Jd];d&&(a.Cb=d[0],a.qc=d[1],a.Ii=d[2],b=d[3]||0,a.Rb=d[4],4==a.me&&a.Ga===a.ma&&3==a.Rb&&(7==a.ma.cc[9]?a.qc=43:a.Rb=5));a.Fk=a.Cb*a.qc;a.zh=a.Fk/a.Ii;a.hi=(a.zh<<1)+b;a.ik=
+b?a.hi+b>>1:0;13<=a.Jd&&(a.zh<<=1);a.Ud.length&&(a.yd=Math.floor(a.xd/a.Cb),a.zd=Math.floor(a.he/a.qc),a.Rb?(b=a.Ud[a.Rb],d=a.Ud[a.Rb<<1],a.wm&&80==a.Cb?d&&a.yd>=3*d.jc>>2&&(a.Rb<<=1,b=d):(d&&a.yd>=d.jc&&(a.Rb<<=1,b=d),b&&(a.yd=b.jc,a.zd=b.kc)),a.Xf=a.Yf=0,b&&(a.Xf=a.Cb*b.jc,a.Yf=a.qc*b.kc)):(a.yd=a.zd=1,a.Xf=a.Cb,a.Yf=a.qc),a.th=a.Wc.createImageData(a.Xf,a.Yf),a.af=window.document.createElement("canvas"),a.af.width=a.Xf,a.af.height=a.Yf,a.cf=a.af.getContext("2d"),a.Sj=a.Tj=0,a.ji=a.xd,a.ki=a.he,
+b=a.xd-a.Cb*a.yd,d=a.he-a.qc*a.zd,0>1,a.ji-=b),0>1,a.ki-=d),b||d)&&(a.Wc.fillStyle=a.Ib.style.backgroundColor,a.Wc.fillRect(0,0,a.xd,a.he));!1!==c?Lb(a,!0):Hk(a,!0)}return!0}function Ck(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b+0]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function Hk(a,b){var c;if(b){if(c=a.zh,void 0===a.dc||a.dc.length!=c)a.dc=Array(c)}else{if(void 0===a.dc)return;c=a.dc.length}for(var d=0;d>8;d=h&15;var g=a.Ud[a.Rb];g.Ef&&(d=g.Ef[d]);var l=h>>4&15;g.Ef&&(l=g.Ef[l]);e?(b*=g.jc,c*=g.kc,e.fillStyle=g.Ye[l],e.fillRect(b,c,g.jc,g.kc)):(b=b*a.yd+a.Sj,c=c*a.zd+a.Tj,a.Wc.fillStyle=g.Ye[l],a.Wc.fillRect(b,c,a.yd,a.zd));h&256&&(l=(f&15)*g.jc,f=(f>>4)*g.kc,e?e.drawImage(g.Th[d],l,f,g.jc,g.kc,b,c,g.jc,g.kc):a.Wc.drawImage(g.Th[d],l,f,g.jc,g.kc,b,c,a.yd,a.zd));h&512&&(f=a.cm,h=a.lk,e?(a.ge&&a.ge!==g.kc&&(f=Math.floor(f*g.kc/a.ge),h=Math.floor(h*g.kc/a.ge)),
+e.fillStyle=g.Ye[d],e.fillRect(b,c+f,g.jc,h)):(a.ge&&a.ge!==a.zd&&(f=Math.floor(f*a.zd/a.ge),h=Math.floor(h*a.zd/a.ge)),a.Wc.fillStyle=g.Ye[d],a.Wc.fillRect(b,c+f,a.yd,h)))}
+function Lb(a,b){if(a.pa.Kb){var c=!1;a.Ga&&(a.Ga===a.ma?a.ma.Bd&32&&(c=!0):a.Ga.Ac&8&&(c=!0));if(c||b){if(b)Hk(a,!0);else if(void 0===a.dc)return;var d=!1;!(b||++a.km&15)&&0<=a.Fe&&(a.Fe++,d=!0);var e=0,f=a.Fk,c=a.Ga.Ua,h=c+a.Ga.Nb,g=(a.Ga.cc[12]<<8)+a.Ga.cc[13];a.Rb&&(g<<=1);var c=c+g,l=a.hi;c+l>h&&(l=h-c,0>l&&(l=0));h=c+l;if(g=!b){for(var g=a.qa,n=!0,p=c>>g.rb;0a.Mc)return;e=a.Mc;f=
+e+1}}if(a.Rb){if(a.Ud[a.Rb]){d=0;g=a.Ee=0;l=1048575;a.Ga.Ac&32&&(g=32768,l&=~g,a.Fe&2||(l&=-65537));for(c+=e<<1;c>8|(r&255)<<8;s=g;var Ha=16;p>=l))>>(Ha-=l);Ck(a.th,p++,u,n[jc])}p>B&&(B=p);u=ha&&(ha=u+1)}e+=2;h++;if(p>=a.Cb){p=0;u+=2;if(u>a.qc)break;u==a.qc&&(u=1,e=c+a.ik)}}zU;U++)ha=
+B&2155905152,0>ha&&(ha+=4294967296),ha=Sj[ha]||0,Ck(a.th,g++,l,h[ha]),B<<=1;g>p&&(p=g);l=z&&(z=l+1)}e++;if(g>=a.Cb&&(g=0,++l>a.qc))break}n>2),c=this.ma.Rh&-17|(this.Pg&1<f&&(f=0);f%b.Li>b.On&&(d|=1);f%=b.Ik;f>b.Rn&&(d|=8);b.Si=e-f;b===a.ma?(d|=b.wf&48^48,b.jd=!1):d=(b.wf^=9)|240;b.wf=d;a.da(b.port+6,null,c,b===a.ma?"STATUS1":"STATUS",d);return d}k.Ra=function(a,b){this.ca&&(b||E(this.ca,rk))&&this.ca.message(a)};k.da=function(a,b,c,d,e){this.ca&&this.ca.da(this,a,b,c,d,rk,e)};
+var nk={948:T.prototype.ln,949:T.prototype.kn,952:T.prototype.mn,954:T.prototype.nn,980:T.prototype.Tm,981:T.prototype.Sm,984:T.prototype.Um,985:T.prototype.Rm,986:T.prototype.Vm},ok={948:T.prototype.Co,949:T.prototype.Bo,952:T.prototype.Do,980:T.prototype.no,981:T.prototype.mo,984:T.prototype.oo,985:T.prototype.lo},pk={960:T.prototype.Bk,961:T.prototype.Bk,962:T.prototype.xn,964:T.prototype.wn,965:T.prototype.vn,970:T.prototype.dn,972:T.prototype.cn,974:T.prototype.bn,975:T.prototype.an},qk={954:T.prototype.Ml,
+960:T.prototype.Ll,961:T.prototype.Ll,962:T.prototype.Fo,964:T.prototype.Mo,965:T.prototype.Lo,970:T.prototype.xo,972:T.prototype.wo,974:T.prototype.vo,975:T.prototype.uo,986:T.prototype.Ml};
Fa(function(){for(var a=D(window.document,"pcjs","video"),b=0;bMissing <canvas> support; try a new web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
e.style.height=c.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight));c.appendChild(e);var f=e.getContext("2d"),d=new T(d,e,f);Ya(d,c)}});
-function Nk(a){this.uk=a.adapter;switch(this.uk){case 1:this.Fj=1016;this.kg=4;break;case 2:this.Fj=760;this.kg=3;break;default:x("Unrecognized serial adapter #"+this.uk);return}this.be=null;y.call(this,"SerialPort",a,Nk);var b=a.binding,c;a=Ok;b&&(void 0===c&&(c="Panel"),(c=Xa(c,this.id))&&(b=c.va[b])&&this.wb(null,null,a,b))}A(y,Nk);var Ok="buffer";k=Nk.prototype;k.Yj=function(a,b){return a==this.oh?(this.yk=b,this):null};
-k.wb=function(a,b,c,d){var e=this;switch(c){case Ok:return this.va[c]=this.be=d,d.onkeydown=function(a){a=a||window.event;var b=a.charCode||a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),Pk(e,[b]))},d.onkeypress=function(a){a=a||window.event;Pk(e,[a.which||a.keyCode])},!0}return!1};k.oc=function(a,b,c,d){this.oa=b;this.T=c;this.ba=d;this.ma=db(a,"ChipSet");sb(b,this,Qk,this.Fj);yb(b,this,Rk,this.Fj);this.Qa()};
-k.Xb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Wb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.he()};k.save=function(){var a=new I(this),b=0,c=[];c[b++]=this.bi;c[b++]=this.bk;c[b++]=this.Ue;c[b++]=this.Ng;c[b++]=this.Yd;c[b++]=this.Rc;c[b++]=this.bd;c[b++]=this.Fc;c[b++]=this.$j;c[b]=this.Ef;a.set(0,c);return a.data()};k.restore=function(a){return this.he(a[0])};
-k.he=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.bi=a[b++];this.bk=a[b++];this.Ue=a[b++];this.Ng=a[b++];this.Yd=a[b++];this.Rc=a[b++];this.bd=a[b++];this.Fc=a[b++];this.$j=a[b++];this.Ef=a[b];return!0};function Pk(a,b){a.Ef=a.Ef.concat(b);Sk(a)}function Sk(a){0>8:this.Ng;this.ca(a,null,b,this.Rc&128?"DLM":"IER",c);return c};k.bn=function(a,b){var c=this.Yd;this.ca(a,null,b,"IIR",c);return c};k.cn=function(a,b){var c=this.Rc;this.ca(a,null,b,"LCR",c);return c};k.en=function(a,b){var c=this.bd;this.ca(a,null,b,"MCR",c);return c};
-k.dn=function(a,b){var c=this.Fc;this.ca(a,null,b,"LSR",c);return c};k.ln=function(a,b){var c=this.$j;this.ca(a,null,b,"MSR",c);return c};k.Ko=function(a,b,c){this.ca(a,b,c,this.Rc&128?"DLL":"THR");this.Rc&128?this.Ue=this.Ue&-256|b:(this.bk=b,this.Fc&=-97,this.be?(13!=b&&(8==b?this.be.value=this.be.value.slice(0,-1):(this.be.value+=String.fromCharCode(b),this.be.scrollTop=this.be.scrollHeight)),a=!0):a=!1,a&&(this.Fc|=96))};
-k.vo=function(a,b,c){this.ca(a,b,c,this.Rc&128?"DLM":"IER");this.Rc&128?this.Ue=this.Ue&255|b<<8:this.Ng=b};k.wo=function(a,b,c){this.ca(a,b,c,"LCR");this.Rc=b};
-k.xo=function(a,b,c){var d=this.bd;this.ca(a,b,c,"MCR");this.bd=b;this.yk&&(d^b)&3&&(a=this.yk,b=this.bd,(c=3==(b&3))?a.lc||(d=!1,a.bd&2||(a.reset(),a.Oa("serial mouse reset"),d=!0),a.bd&1||(a.Oa("serial mouse ID requested"),d=!0),d&&(Pk(a.Pf,[77]),a.Oa("serial mouse ID sent")),Tk(a,a.Hb),a.lc=c):a.lc&&(a.Oa("serial mouse inactive"),Uk(a.Hb),a.lc=c),a.bd=b)};k.Oa=function(a){this.ba&&E(this.ba,Vk)&&this.ba.message(a)};k.ca=function(a,b,c,d,e){this.ba&&this.ba.ca(this,a,b,c,d,Vk,e)};
-var Qk={0:Nk.prototype.qn,1:Nk.prototype.an,2:Nk.prototype.bn,3:Nk.prototype.cn,4:Nk.prototype.en,5:Nk.prototype.dn,6:Nk.prototype.ln},Rk={0:Nk.prototype.Ko,1:Nk.prototype.vo,3:Nk.prototype.wo,4:Nk.prototype.xo};Fa(function(){for(var a=D(window.document,"pcjs","serial"),b=0;ba.Bg||0>a.Cg)a.Bg=b.clientX,a.Cg=b.clientY;a.wf=b.clientX-a.Bg;a.xf=b.clientY-a.Cg;(a.wf||a.xf)&&Xk(a,null,b.clientX,b.clientY);a.Bg=b.clientX;a.Cg=b.clientY}},!1),b.addEventListener("mousedown",function(b){Yk(a,b.button,!0)},!1),b.addEventListener("mouseup",function(b){Yk(a,b.button,!1)},!1),a.pi=!0),b.style.cursor="none")}function Uk(a){a&&(a.style.cursor="auto")}
-function Yk(a,b,c){if(a.lc&&a.T&&a.T.Kb)switch(b){case 0:a.bh!=c&&(a.bh=c,Xk(a,"mouse button1 "+(c?"dn":"up")));break;case 2:a.dh!=c&&(a.dh=c,Xk(a,"mouse button2 "+(c?"dn":"up")))}}function Xk(a,b,c,d){var e=64|(a.bh?32:0)|(a.dh?16:0)|(a.xf&192)>>4|(a.wf&192)>>6,f=a.wf&63,h=a.xf&63;a.Oa((b?b+": ":"")+(void 0!==d?"mouse ("+c+","+d+"): ":"")+"serial packet ["+t(e)+","+t(f)+","+t(h)+"]");Pk(a.Pf,[e,f,h]);a.wf=a.xf=0}k.Oa=function(a){this.ba&&E(this.ba,Zk)&&this.ba.message(a)};
-Fa(function(){for(var a=D(window.document,"pcjs","mouse"),b=0;bb.indexOf("/api/v1/dump")&&(a=ga(b),"json"==a?e=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(a="action=open&volume="+b+("&mode="+this.mode),a+="&chs="+this.Qb+":"+this.Sb+":"+this.$b+":"+this.Ib,a+="&machine="+this.ga.ff(),a+="&user="+this.ga.fe(),e=ta()+"/api/v1/disk?"+a,this.gh=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?
-(c="disk",d="&mbhd=0"):-1!==b.indexOf("/",b.length-1)&&(c="dir"),e=ta()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.df?"":d)+"&format=json")),sa(e,!0,null,this,this.mm,b))};
-k.mm=function(a,b,c,d){var e=null;this.ef=!1;var f=0>c&&this.Fa&&!this.Fa.Jb;if(this.gh)c?this.ga.Ia('Unable to connect to disk "'+d+'" (error '+c+": "+b+")",f):(this.xd=!0,e=this);else if(c)this.ga.Ia('Unable to load disk "'+this.Id+'" (error '+c+")",f);else try{if(0h&&0b.indexOf("0x")&&
+function Nk(a){this.yk=a.adapter;switch(this.yk){case 1:this.Hj=1016;this.ng=4;break;case 2:this.Hj=760;this.ng=3;break;default:x("Unrecognized serial adapter #"+this.yk);return}this.ee=null;y.call(this,"SerialPort",a,Nk);var b=a.binding,c;a=Ok;b&&(void 0===c&&(c="Panel"),(c=Xa(c,this.id))&&(b=c.xa[b])&&this.zb(null,null,a,b))}A(y,Nk);var Ok="buffer";k=Nk.prototype;k.$j=function(a,b){return a==this.rh?(this.Ck=b,this):null};
+k.zb=function(a,b,c,d){var e=this;switch(c){case Ok:return this.xa[c]=this.ee=d,d.onkeydown=function(a){a=a||window.event;var b=a.charCode||a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),Pk(e,[b]))},d.onkeypress=function(a){a=a||window.event;Pk(e,[a.which||a.keyCode])},!0}return!1};k.oc=function(a,b,c,d){this.qa=b;this.T=c;this.ca=d;this.na=db(a,"ChipSet");sb(b,this,Qk,this.Hj);yb(b,this,Rk,this.Hj);this.Ta()};
+k.Xb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Wb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.ke()};k.save=function(){var a=new I(this),b=0,c=[];c[b++]=this.ei;c[b++]=this.dk;c[b++]=this.Xe;c[b++]=this.Qg;c[b++]=this.ae;c[b++]=this.Tc;c[b++]=this.fd;c[b++]=this.Gc;c[b++]=this.bk;c[b]=this.Hf;a.set(0,c);return a.data()};k.restore=function(a){return this.ke(a[0])};
+k.ke=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.ei=a[b++];this.dk=a[b++];this.Xe=a[b++];this.Qg=a[b++];this.ae=a[b++];this.Tc=a[b++];this.fd=a[b++];this.Gc=a[b++];this.bk=a[b++];this.Hf=a[b];return!0};function Pk(a,b){a.Hf=a.Hf.concat(b);Sk(a)}function Sk(a){0>8:this.Qg;this.da(a,null,b,this.Tc&128?"DLM":"IER",c);return c};k.fn=function(a,b){var c=this.ae;this.da(a,null,b,"IIR",c);return c};k.gn=function(a,b){var c=this.Tc;this.da(a,null,b,"LCR",c);return c};k.jn=function(a,b){var c=this.fd;this.da(a,null,b,"MCR",c);return c};
+k.hn=function(a,b){var c=this.Gc;this.da(a,null,b,"LSR",c);return c};k.pn=function(a,b){var c=this.bk;this.da(a,null,b,"MSR",c);return c};k.No=function(a,b,c){this.da(a,b,c,this.Tc&128?"DLL":"THR");this.Tc&128?this.Xe=this.Xe&-256|b:(this.dk=b,this.Gc&=-97,this.ee?(13!=b&&(8==b?this.ee.value=this.ee.value.slice(0,-1):(this.ee.value+=String.fromCharCode(b),this.ee.scrollTop=this.ee.scrollHeight)),a=!0):a=!1,a&&(this.Gc|=96))};
+k.yo=function(a,b,c){this.da(a,b,c,this.Tc&128?"DLM":"IER");this.Tc&128?this.Xe=this.Xe&255|b<<8:this.Qg=b};k.zo=function(a,b,c){this.da(a,b,c,"LCR");this.Tc=b};
+k.Ao=function(a,b,c){var d=this.fd;this.da(a,b,c,"MCR");this.fd=b;this.Ck&&(d^b)&3&&(a=this.Ck,b=this.fd,(c=3==(b&3))?a.lc||(d=!1,a.fd&2||(a.reset(),a.Ra("serial mouse reset"),d=!0),a.fd&1||(a.Ra("serial mouse ID requested"),d=!0),d&&(Pk(a.Tf,[77]),a.Ra("serial mouse ID sent")),Tk(a,a.Ib),a.lc=c):a.lc&&(a.Ra("serial mouse inactive"),Uk(a.Ib),a.lc=c),a.fd=b)};k.Ra=function(a){this.ca&&E(this.ca,Vk)&&this.ca.message(a)};k.da=function(a,b,c,d,e){this.ca&&this.ca.da(this,a,b,c,d,Vk,e)};
+var Qk={0:Nk.prototype.un,1:Nk.prototype.en,2:Nk.prototype.fn,3:Nk.prototype.gn,4:Nk.prototype.jn,5:Nk.prototype.hn,6:Nk.prototype.pn},Rk={0:Nk.prototype.No,1:Nk.prototype.yo,3:Nk.prototype.zo,4:Nk.prototype.Ao};Fa(function(){for(var a=D(window.document,"pcjs","serial"),b=0;ba.Eg||0>a.Fg)a.Eg=b.clientX,a.Fg=b.clientY;a.zf=b.clientX-a.Eg;a.Af=b.clientY-a.Fg;(a.zf||a.Af)&&Xk(a,null,b.clientX,b.clientY);a.Eg=b.clientX;a.Fg=b.clientY}},!1),b.addEventListener("mousedown",function(b){Yk(a,b.button,!0)},!1),b.addEventListener("mouseup",function(b){Yk(a,b.button,!1)},!1),a.si=!0),b.style.cursor="none")}function Uk(a){a&&(a.style.cursor="auto")}
+function Yk(a,b,c){if(a.lc&&a.T&&a.T.pa.Lb)switch(b){case 0:a.fh!=c&&(a.fh=c,Xk(a,"mouse button1 "+(c?"dn":"up")));break;case 2:a.gh!=c&&(a.gh=c,Xk(a,"mouse button2 "+(c?"dn":"up")))}}function Xk(a,b,c,d){var e=64|(a.fh?32:0)|(a.gh?16:0)|(a.Af&192)>>4|(a.zf&192)>>6,f=a.zf&63,h=a.Af&63;a.Ra((b?b+": ":"")+(void 0!==d?"mouse ("+c+","+d+"): ":"")+"serial packet ["+t(e)+","+t(f)+","+t(h)+"]");Pk(a.Tf,[e,f,h]);a.zf=a.Af=0}k.Ra=function(a){this.ca&&E(this.ca,Zk)&&this.ca.message(a)};
+Fa(function(){for(var a=D(window.document,"pcjs","mouse"),b=0;bb.indexOf("/api/v1/dump")&&(a=ga(b),"json"==a?e=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(a="action=open&volume="+b+("&mode="+this.mode),a+="&chs="+this.Qb+":"+this.Sb+":"+this.$b+":"+this.Jb,a+="&machine="+this.ha.jf(),a+="&user="+this.ha.ie(),e=ta()+"/api/v1/disk?"+a,this.jh=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?
+(c="disk",d="&mbhd=0"):-1!==b.indexOf("/",b.length-1)&&(c="dir"),e=ta()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.gf?"":d)+"&format=json")),sa(e,!0,null,this,this.qm,b))};
+k.qm=function(a,b,c,d){var e=null;this.hf=!1;var f=0>c&&this.Ha&&!this.Ha.pa.Kb;if(this.jh)c?this.ha.Ka('Unable to connect to disk "'+d+'" (error '+c+": "+b+")",f):(this.Ad=!0,e=this);else if(c)this.ha.Ka('Unable to load disk "'+this.Ld+'" (error '+c+")",f);else try{if(0h&&0b.indexOf("0x")&&
'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");if(g.length)if(1==g.length)x(g[0]);else{for(b=a=0;b>2,p=l.pattern;void 0===p&&(p=l.pattern=0);var r=l.data;if(void 0===r){var s=l.bytes;if(void 0!==s&&s.length){for(var f=n<<2,u=s.length;ub&&(b=0);2E3b&&(b=0);2E3